2017-07-04 76 views
1

我使用Talend從表中提取數據庫字段名稱,並在用「」替換字段名稱中的「_」後,將它們寫入到csv中。我想要將這些值與實際的標題對齊。如何使用tJava動態地將字段寫入csv文件

如:

|First_Name|Last_Name| 
|----------|---------| 
|First Name|Last Name| 

我的工作類似於以下。在tJavaRow enter image description here

代碼如下:

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中使用它,它只會將最後一個字段的名稱作爲值。 tmap我有tJava和tFileOutputDelimited之間。 enter image description here

+0

這是關於動態頭交換嗎? 'tMap'如何看起來像?上下文中存儲了什麼? – tobi6

+0

@ tobi6上下文有列名 – BlueStar

回答

0

您不能更改模式,因爲它們被視爲在後端生成的java代碼中的聲明變量。

您的模式「|名字|姓氏|」被轉換爲如下:
String First_Name = null;
String Last_Name = null;
因此,您無法即時更改這些架構列名稱。

但是你可以使用你想要的分隔符創建您是從數據庫中檢索列名的記錄(讓我們逗號

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

我不太確定,我可以直接從tJavaRow將context.columnName寫入csv,因爲context.columnName的值是動態的。 – BlueStar

相關問題