mirror of
https://github.com/alibaba/DataX.git
synced 2025-05-02 07:21:48 +08:00
Merge a42feefb46
into 0824b45c5e
This commit is contained in:
commit
bf0e1dc9bd
@ -1,7 +1,9 @@
|
|||||||
package com.alibaba.datax.plugin.rdbms.util;
|
package com.alibaba.datax.plugin.rdbms.util;
|
||||||
|
|
||||||
import com.alibaba.datax.common.exception.DataXException;
|
import com.alibaba.datax.common.exception.DataXException;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@ -206,6 +208,17 @@ public enum DataBaseType {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String buildQuoteColumnFormat(List<String> columnName) {
|
||||||
|
if (null == columnName || columnName.isEmpty()) {
|
||||||
|
return StringUtils.EMPTY;
|
||||||
|
}
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
for (String column : columnName) {
|
||||||
|
builder.append(column.contains("`") ? column : quoteColumnName(column)).append(",");
|
||||||
|
}
|
||||||
|
return builder.substring(0, builder.length() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
public String quoteTableName(String tableName) {
|
public String quoteTableName(String tableName) {
|
||||||
String result = tableName;
|
String result = tableName;
|
||||||
|
|
||||||
|
@ -267,8 +267,9 @@ public class CommonRdbmsWriter {
|
|||||||
this.taskPluginCollector = taskPluginCollector;
|
this.taskPluginCollector = taskPluginCollector;
|
||||||
|
|
||||||
// 用于写入数据的时候的类型根据目的表字段类型转换
|
// 用于写入数据的时候的类型根据目的表字段类型转换
|
||||||
|
String quoteColumnFormat = this.dataBaseType.buildQuoteColumnFormat(this.columns);
|
||||||
this.resultSetMetaData = DBUtil.getColumnMetaData(connection,
|
this.resultSetMetaData = DBUtil.getColumnMetaData(connection,
|
||||||
this.table, StringUtils.join(this.columns, ","));
|
this.table, quoteColumnFormat);
|
||||||
// 写数据库的SQL语句
|
// 写数据库的SQL语句
|
||||||
calcWriteRecordSql();
|
calcWriteRecordSql();
|
||||||
|
|
||||||
|
@ -118,6 +118,8 @@ public final class WriterUtil {
|
|||||||
String.format("您所配置的 writeMode:%s 错误. 因为DataX 目前仅支持replace,update 或 insert 方式. 请检查您的配置并作出修改.", writeMode));
|
String.format("您所配置的 writeMode:%s 错误. 因为DataX 目前仅支持replace,update 或 insert 方式. 请检查您的配置并作出修改.", writeMode));
|
||||||
}
|
}
|
||||||
// && writeMode.trim().toLowerCase().startsWith("replace")
|
// && writeMode.trim().toLowerCase().startsWith("replace")
|
||||||
|
String quoteColumnFormat = dataBaseType.buildQuoteColumnFormat(columnHolders);
|
||||||
|
|
||||||
String writeDataSqlTemplate;
|
String writeDataSqlTemplate;
|
||||||
if (forceUseUpdate ||
|
if (forceUseUpdate ||
|
||||||
((dataBaseType == DataBaseType.MySql || dataBaseType == DataBaseType.Tddl) && writeMode.trim().toLowerCase().startsWith("update"))
|
((dataBaseType == DataBaseType.MySql || dataBaseType == DataBaseType.Tddl) && writeMode.trim().toLowerCase().startsWith("update"))
|
||||||
@ -125,7 +127,7 @@ public final class WriterUtil {
|
|||||||
//update只在mysql下使用
|
//update只在mysql下使用
|
||||||
|
|
||||||
writeDataSqlTemplate = new StringBuilder()
|
writeDataSqlTemplate = new StringBuilder()
|
||||||
.append("INSERT INTO %s (").append(StringUtils.join(columnHolders, ","))
|
.append("INSERT INTO %s (").append(quoteColumnFormat)
|
||||||
.append(") VALUES(").append(StringUtils.join(valueHolders, ","))
|
.append(") VALUES(").append(StringUtils.join(valueHolders, ","))
|
||||||
.append(")")
|
.append(")")
|
||||||
.append(onDuplicateKeyUpdateString(columnHolders))
|
.append(onDuplicateKeyUpdateString(columnHolders))
|
||||||
@ -137,7 +139,7 @@ public final class WriterUtil {
|
|||||||
writeMode = "replace";
|
writeMode = "replace";
|
||||||
}
|
}
|
||||||
writeDataSqlTemplate = new StringBuilder().append(writeMode)
|
writeDataSqlTemplate = new StringBuilder().append(writeMode)
|
||||||
.append(" INTO %s (").append(StringUtils.join(columnHolders, ","))
|
.append(" INTO %s (").append(quoteColumnFormat)
|
||||||
.append(") VALUES(").append(StringUtils.join(valueHolders, ","))
|
.append(") VALUES(").append(StringUtils.join(valueHolders, ","))
|
||||||
.append(")").toString();
|
.append(")").toString();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user