talend工具通过关键字来取得text文本中的数据
问题描述:
在文件夹中有多个text文本,通过关键字来取得text文本里面我所需要的数据,并出力到Excel里面。取得的数据,在text文本里面可能是多行的存在,并且在Excel里面是一行的存在。
解决方法:
解决方法,在talend工具里面加入控件「tjava」,之后写入java代码来读取text文本文件,之后利用stringBuffer来处理成字符串的形式,在此阶段把text文本里面的多行数据形成一行之后向下一个阶段传值。
下图是用talend工具画的示意图

选择tjava_2之后再「コンポーネント」里面编辑Java代码。并且在「Conexts」里面可以设定参数[context],在下面的代码当中最重要的代码是[
context.txtStr = strBuData.toString();
row1.txtStr = context.txtStr;]

String fileName = "C:/メール格式/"+( new SimpleDateFormat("yyyyMMdd").format(new Date()))+"/"+ ((String)globalMap.get("tFileList_1_CURRENT_FILE"));
File file = new File(fileName);
try (InputStreamReader fr = new InputStreamReader(new FileInputStream(file), "SJIS");
BufferedReader reader = new BufferedReader(fr)) {
String temp = "";
String[] strTemp= {",",",",",",",",",",",",",",",",","};
while ((temp = reader.readLine()) != null) {
if (temp.indexOf("名前") > 0){
strTemp[0] = temp + ",";
}
if (temp.indexOf("性別") > 0){
strTemp[1] = temp + ",";
}
if (temp.indexOf("年齢") > 0){
strTemp[2] = temp + ",";
}
if (temp.indexOf("経験年数") > 0){
strTemp[3] = temp + ",";
}
if (temp.indexOf("最寄駅") > 0){
strTemp[4] = temp + ",";
}
if (temp.indexOf("日本語レベル") > 0){
strTemp[5] = temp + ",";
}
if (temp.indexOf("スキル") > 0){
strTemp[6] = temp + ",";
}
if (temp.indexOf("業種") > 0){
strTemp[7] = temp + ",";
}
if (temp.indexOf("希望単価") > 0){
strTemp[8] = temp + ",";
}
}
StringBuilder strBuData = new StringBuilder();
for(int i = 0; i < strTemp.length; i++){
strBuData.append(strTemp[i]);
}
context.txtStr = strBuData.toString();
row1.txtStr = context.txtStr;
} catch(FileNotFoundException e) {
throw new Exception(e);
}
在「详细设定」里面导入你所写的Java代码所需要的包文件。
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.io.InputStreamReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Map;
以上就是对「tjava_2」控件的编辑及代码的做成。
「tjava_1」控件的作用是对所生成的数据进行各种各样的判断。例如:需要截取所传参数的多少位,之后显示在Excel里面。所需要的代码如下:
选中控件「tjava_1」在「コンポーネント」里面编辑下列代码。
String foo = "bar";
outputDataConver.setName("input");
outputDataConver.setSex("input");
outputDataConver.setAge("input");
outputDataConver.setKkns("input");
outputDataConver.setMyk("input");
outputDataConver.setLebel("input");
outputDataConver.setSkill("input");
outputDataConver.setGysyr("input");
outputDataConver.setCost("input");
之后再左侧的工具栏中选中「コード」⇒「ルーチン」下,新创建一个class类之后编辑下面的代码。
package routines;
public class outputDataConver {
public static String setName(String str) {
if (!str.equals("")) {
String[] ret = str.split(",");
return ret[0].substring(ret[0].trim().indexOf("名前") + 4,
ret[0].length());
}
return "";
}
public static String setSex(String str) {
if (!str.equals("")) {
String[] ret = str.split(",");
String retVal = "";
for (int i = 0; i < ret.length; i++) {
if (i == 1) {
retVal = ret[1].substring(ret[1].trim().indexOf("性別") + 4,
ret[1].length()).toString();
}
}
return retVal;
}
return "";
}
public static String setAge(String str) {
if (!str.equals("")) {
String[] ret = str.split(",");
String retVal = "";
for (int i = 0; i < ret.length; i++) {
if (i == 2) {
retVal = ret[2].substring(ret[2].trim().indexOf("年齢") + 4,
ret[2].length()).toString();
}
}
return retVal;
}
return "";
}
public static String setKkns(String str) {
if (!str.equals("")) {
String[] ret = str.split(",");
String retVal = "";
for (int i = 0; i < ret.length; i++) {
if (i == 3) {
retVal = ret[3].substring(
ret[3].trim().indexOf("経験年数") + 6, ret[3].length())
.toString();
}
}
return retVal;
}
return "";
}
public static String setMyk(String str) {
if (!str.equals("")) {
String[] ret = str.split(",");
String retVal = "";
for (int i = 0; i < ret.length; i++) {
if (i == 4) {
retVal = ret[4].substring(ret[4].trim().indexOf("最寄駅") + 5,
ret[4].length()).toString();
}
}
return retVal;
}
return "";
}
public static String setLebel(String str) {
if (!str.equals("")) {
String[] ret = str.split(",");
String retVal = "";
for (int i = 0; i < ret.length; i++) {
if (i == 5) {
retVal = ret[5].substring(
ret[5].trim().indexOf("日本語レベル") + 8,
ret[5].length()).toString();
}
}
return retVal;
}
return "";
}
public static String setSkill(String str) {
if (!str.equals("")) {
String[] ret = str.split(",");
String retVal = "";
for (int i = 0; i < ret.length; i++) {
if (i == 6) {
retVal = ret[6].substring(ret[6].trim().indexOf("スキル") + 5,
ret[6].length()).toString();
}
}
return retVal;
}
return "";
}
public static String setGysyr(String str) {
if (!str.equals("")) {
String[] ret = str.split(",");
String retVal = "";
for (int i = 0; i < ret.length; i++) {
if (i == 7) {
retVal = ret[7].substring(ret[7].trim().indexOf("業種") + 3,
ret[7].length()).toString();
}
}
return retVal;
}
return "";
}
public static String setCost(String str) {
if (!str.equals("")) {
String[] ret = str.split(",");
String retVal = "";
for (int i = 0; i < ret.length; i++) {
if (i == 8) {
retVal = ret[8].substring(
ret[8].trim().indexOf("希望単価") + 3, ret[8].length())
.toString();
}
}
return retVal;
}
return "";
}
public static String setKsy(String str) {
return str;
}
}
之后在控件「tMap」当中进行调用及匹配。

最终结果显示如下:

talend工具通过关键字来取得text文本中的数据的更多相关文章
- 小技巧之“将Text文件中的数据导入到Excel中,这里空格为分割符为例”
1.使用场景 将数据以文本导出后,想录入到Excel中,的简便方案, 起因:对于Excel的导出,Text导出明显会更方便些 2.将Text文件中的数据导入到Excel中,这里空格为分割符为例的步骤 ...
- C# 创建text文本并写入数据
/// <summary> /// 创建TXT文本并往里面写入数据 /// </summary> /// <param name="FileName" ...
- [SoapUI] Groovy在SoapUI里获取Text文本第一行数据
// get external txt file datadef groovyUtils =new com.eviware.soapui.support.GroovyUtils(context)def ...
- 使用跨平台图表控件TeeChart如何从DAT或TEXT文件中导入数据
大多数开发人员在使用TeeChart进行开发的时候,都需要访问包含在文本文档中的一些数据,本次教程将详细讲解如何去实现这一步骤. 文本文件通常包含使用空格键或者是TAB键分隔开的数字和文字: TeeC ...
- c# 将文本中的数据快速导入到数据库(200万左右的数据量)
1.sql2008中 list表,只有一个字段 Lvalue 2.文本大约256万的数据量 3.测试结果:用时36秒! string connStr = @"Data Source=.\SQ ...
- mysqldump工具,通过--where选项,导出指定表中指定数据?
需求描述: 今天在使用mysqldump工具导出表的时候,考虑能不能导出满足条件的数据行,不要 将表都导出来,查找资料,通过--where选项,就可以实现目的,做个实验,在此记录下. 操作过程: 1. ...
- JAVA读取TXT文本中的数据
现在在Demo.txt中存在数据: ABC 需要将ABC从文本文件中读取出来 代码片: import java.io.*; class FileReaderDemo { public static v ...
- Python-模块,以及使用文本中的数据
模块导入: from math import pi as math_pi print math_pi #相当于把pi取了个别名 # -*- coding: cp936 -*-from rand ...
- IO流的练习1 —— 随机获取文本中的信息
需求:一个文本中有几个名字,随机从中获取一个名字 分析: A:首先把文本中的数据读出 B:再把数据存储到集合中 C:产生一个随机的索引 D:打印出这个索引对应的值 public static void ...
随机推荐
- 洛谷 P3955 图书管理员 题解
每日一题 day12 打卡 Analysis 模拟+快速幂 先把图书的编码存起来排序,保证第一个找到的就是最小的.如果要求一个数后x位,就将这个数模10的x次方,同理,我们可以通过这个规律来判断后缀. ...
- 新版create-react-app+webpack4跨域
src/setupProxy.js 创建文件 const proxy = require('http-proxy-middleware'); module.exports = function(ap ...
- leetcode解题报告(22):Two Sum II - Input array is sorted
描述 Given an array of integers that is already sorted in ascending order, find two numbers such that ...
- 2017.11.7 Noip2017 考前模拟赛
----------------------------------T1---------------------------------- ——>数学老师的报复 题目描述 11 班数学大佬 Y ...
- RSYNC @ERROR: AUTH FAILED ON MODULE XXX 解决思路及附录RSYNC常见问题及解决办法
使用rsync往服务器上传文件时,client报如下异常: @ERROR: auth failed on module XXX rsync error: error starting client-s ...
- 前端代码规范-CSS
CSS规范 一.命名规范BEM(Block Element Modifier) 1.Block name -- 实体名称中的单词之间用连字符分隔(-) HTML <div class=" ...
- 将Excel文件导入到Navicat Premium中日期变为0000-00-00
在网上查询了一些文章,说要改excel的单元格格式,我试验了好几次,不管是设置成文本,还是日期,都始终是 0000-00-00. 最后改变了办法,把数据库中的date类型设置 成 varchar,等导 ...
- python -- 安装+pip+requests
python3 安装库 sudo python3 -m pip install beautifulsoup4 步骤1:安装pyenv 为了能顺利的将系统的python和下载的python版本呼唤, ...
- vue.js中如何使用scss
要使用 <style lang="sass"> 請記得要裝相依的套件 $ npm install sass-loader node-sass vue-style-loa ...
- Nginx设置黑名单
date: 2019-07-04 14:35:56 author: headsen chen notice: 个人原创 1,在分域名下面设置: [root@pro-nginx:/usr/local/ ...