Talend 如何使用tJava将字段动态写入csv文件
我使用Talend从表中提取数据库字段名,并将字段名中的“\u1”替换为“”后写入csv。我希望这些值与实际的头相对应 例如: 我的工作和下面的相似。 tJavaRow中的代码如下:Talend 如何使用tJava将字段动态写入csv文件,talend,Talend,我使用Talend从表中提取数据库字段名,并将字段名中的“\u1”替换为“”后写入csv。我希望这些值与实际的头相对应 例如: 我的工作和下面的相似。 tJavaRow中的代码如下: for (java.lang.reflect.Field field: input_row.getClass().getDeclaredFields()) { String fieldName = field.getName(); String newFieldName = null; newF
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。您不能更改模式,因为它们在后端生成的java代码中被视为声明变量。
您的模式“|名|姓|”将转换为以下格式:
字符串First_Name=null
字符串Last_Name=null
因此,您不能动态更改这些架构列名。
但您可以使用所需的分隔符(使用逗号)从数据库中检索的列名创建记录
现在,在将数据写入csv文件之前,请将context.columnName中的标题记录写入该csv文件。
写入头记录后,通过选中TFileOutputDifferentied中的“append”复选框将数据附加到该文件。您不能更改架构,因为它们在后端生成的java代码中被视为声明变量。
您的模式“|名|姓|”将转换为以下格式:
字符串First_Name=null
字符串Last_Name=null
因此,您不能动态更改这些架构列名。
但您可以使用所需的分隔符(使用逗号)从数据库中检索的列名创建记录
现在,在将数据写入csv文件之前,请将context.columnName中的标题记录写入该csv文件。
在写入头记录后,通过选中TFileOutputDifferentied中的“append”复选框将数据附加到该文件。这只是为了动态交换头吗?
tMap
看起来怎么样?上下文中存储了什么?@tobi6 context有columnname这只是关于动态交换头吗?tMap
看起来怎么样?上下文中存储了什么?@tobi6 context有columnName我不太确定如何直接从tJavaRow将context.columnName写入csv,因为context.columnName值是动态的。我不太确定如何直接从tJavaRow将context.columnName写入csv,因为context.columnName值是动态的。
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 );
}
for (java.lang.reflect.Field field : input_row.getClass().getDeclaredFields()) {
String fieldName = field.getName();
context.columnName = context.columnName + "," + fieldName.replaceAll("_", " ");
}