Skip to content

Commit 0779a12

Browse files
committed
fix column with upcase issue
1 parent 597c686 commit 0779a12

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

gpdbwriter/src/main/java/cn/hashdata/datax/plugin/writer/gpdbwriter/CopyWriterTask.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package cn.hashdata.datax.plugin.writer.gpdbwriter;
22

33
import java.sql.Connection;
4+
import java.util.ArrayList;
45
import java.util.List;
56
import java.util.concurrent.CompletionService;
67
import java.util.concurrent.ExecutionException;
@@ -48,12 +49,25 @@ public Connection createConnection() {
4849
Connection connection = DBUtil.getConnection(this.dataBaseType, this.jdbcUrl, username, password);
4950
DBUtil.dealWithSessionConfig(connection, writerSliceConfig, this.dataBaseType, BASIC_MESSAGE);
5051
return connection;
52+
}
53+
54+
private String constructColumnNameList(List<String> columnList) {
55+
List<String> columns = new ArrayList<String>();
56+
57+
for (String column : columnList) {
58+
if (column.endsWith("\"") && column.startsWith("\"")) {
59+
columns.add(column);
60+
} else {
61+
columns.add("\"" + column + "\"");
62+
}
63+
}
5164

65+
return StringUtils.join(columns, ",");
5266
}
5367

5468
public String getCopySql(String tableName, List<String> columnList, int segment_reject_limit) {
5569
StringBuilder sb = new StringBuilder().append("COPY ").append(tableName).append("(")
56-
.append(StringUtils.join(columnList, ","))
70+
.append(constructColumnNameList(columnList))
5771
.append(") FROM STDIN WITH DELIMITER '|' NULL '' CSV QUOTE '\"' ESCAPE E'\\\\'");
5872

5973
if (segment_reject_limit >= 2) {
@@ -110,7 +124,7 @@ public void startWrite(RecordReceiver recordReceiver, Configuration writerSliceC
110124
try {
111125

112126
this.resultSetMetaData = DBUtil.getColumnMetaData(connection, this.table,
113-
StringUtils.join(this.columns, ","));
127+
constructColumnNameList(this.columns));
114128
for (int i = 0; i < numProcessor; i++) {
115129
cs.submit(new CopyProcessor(this, this.columnNumber, resultSetMetaData, recordQueue, dataQueue));
116130
}

0 commit comments

Comments
 (0)