首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用tJava动态地将字段写入csv文件

问如何使用tJava动态地将字段写入csv文件
EN

Stack Overflow用户
提问于 2017-07-04 19:44:54
回答 1查看 1.3K关注 0票数 1

我使用Talend从表中提取数据库字段名,并在将字段名中的"_“替换为”“之后将它们写入csv。我想让这些值对应于实际的标题。

例:

代码语言:javascript
复制
|First_Name|Last_Name|
|----------|---------|
|First Name|Last Name|

我的工作看起来很像跟随者。

​

tJavaRow中的代码如下:

代码语言:javascript
复制
    for (java.lang.reflect.Field field: 
 input_row.getClass().getDeclaredFields()) {
 String fieldName = field.getName();
 String newFieldName = null;
 newFieldName = fieldName.replaceAll("_", " ");
 context.columnName = newFieldName;
 System.out.println("Field name is " + context.columnName );
     }

如何为csv文件中的每个字段获取这个上下文变量的值?如果我在tmap中直接使用它,它将只有最后一个字段的名称作为值。我在tJava和tFileOutputDelimited之间的tmap。

​

EN

回答 1

Stack Overflow用户

发布于 2017-07-05 10:44:31

您不能更改模式,因为它们被视为在后端生成的java代码中声明的变量。

模式"|First_Name|Last_Name|“被转换为如下所示:

字符串First_Name =null;

字符串Last_Name = null;

因此,不能动态更改这些架构列名。

但是,您可以使用所需的分隔符从数据库中检索的列名中创建记录(使用逗号)。

代码语言:javascript
复制
for (java.lang.reflect.Field field : input_row.getClass().getDeclaredFields()) {
    String fieldName = field.getName();
    context.columnName = context.columnName + "," + fieldName.replaceAll("_", " ");
}

现在,在将数据写入csv文件之前,将context.columnName中的头记录写入该csv文件。

写入头记录后,通过选中tFileOutputDelimitted中的“追加”复选框,将数据附加到该文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44913173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档