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 ...
随机推荐
- MongoDB journal 与 oplog,究竟谁先写入?
MongoDB journal 与 oplog,谁先写入?最近经常被人问到,本文主要科普一下 MongoDB 里 oplog 以及 journal 这两个概念. journal journal 是 M ...
- 利用亚马逊AWS搭建个人服务器
转载博客地址:https://www.jianshu.com/p/a045d4217175
- bzoj 3498
统计三元环 很多代码在bzoj都T诶 #include <iostream> #include <cstdio> #include <algorithm> #inc ...
- P1608 路径统计
题目描述 “RP餐厅”的员工素质就是不一般,在齐刷刷的算出同一个电话号码之后,就准备让HZH,TZY去送快餐了,他们将自己居住的城市画了一张地图,已知在他们的地图上,有N个地方,而且他们目前处在标注为 ...
- The Boot Process at a Glance x86/x64系统启动过程解析
哥又来干体力活了.人肉翻译一下: The Boot Process at a Glance This section explains the boot process in sufficient d ...
- Python中匹配IP的正则表达式
下面是IPv4的IP正则匹配表达式 import re #简单的匹配给定的字符串是否是ip地址,下面的例子它不是IPv4的地址,但是它满足正则表达式 if re.match(r"^(?:[0 ...
- mybatis-generator-gui如何打包成exe
快速阅读: 用wix和inno setup把mybatis-generator-gui 打包成exe和安装文件. 以后使用的时候方便,不用每次打开eclipse运行. 使用inno setup 5 ...
- 2018-2019-2 20165312《网络攻防技术》Exp 8 Web基础
2018-2019-2 20165312<网络攻防技术>Exp 8 Web基础 目录 一.相关知识点总结 二.实验内容 三.实验步骤 四.实验总结及问题回答 五.实验中遇到的问题及解决方法 ...
- python何时用list,dict,set
从读取的角度来讲: 看是用来随机读取(查询)还是连续读取. list数组集中存放,连续读取效率高(具体还没测试,理论上应该如此). dict散列表,使用hash计算存放的位置,随机读取效率高. 随机读 ...
- mysql的配置文件解释
1 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效 [mysqld] character_set_server=utf8collation-server=utf8_general ...