在使用模版的时候
datax 从mysql到sqlserver遇到了这个问题:
报错:
2024-06-07 17:20:16.232 [job-0] INFO OriginalConfPretreatmentUtil - table:[test3] all columns:[
mgid
].
2024-06-07 17:20:16.313 [job-0] ERROR JobContainer - Exception when job run
com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-01], Description:[获取表字段相关信息失败.]. - 获取表:test3 的字段的元信息时失败. 请联系 DBA 核查该库、表信息. - com.microsoft.sqlserver.jdbc.SQLServerException: “`”附近有语法错误。
是因为这里加了’
sqlserver不允许这个
解决方法就是使用自定义模版
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "123456",
"connection": [
{
"querySql": [
"select mgid from test1;"
],
"jdbcUrl": [
"jdbc:mysql://172.16.121.108:3306/test?allowLoadLocalInfile=false&autoDeserialize=false&allowLocalInfile=false&allowUrlInLocalInfile=false"
]
}
]
}
},
"writer": {
"name": "sqlserverwriter",
"parameter": {
"username": "SA",
"password": "DTstack@123",
"column": [
"mgid"
],
"connection": [
{
"table": [
"test3"
],
"jdbcUrl": "jdbc:sqlserver://172.16.120.111:1433;databaseName=TestDB"
}
]
}
}
}
],
"setting": {
"speed": {
"channel": 1
},
"errorLimit": {
"record": 0,
"percentage": 0
}
}
}
}
也可以改源码
DataxUtils.java中删除处理SQL服务器模块的代码中的符号“`”。
源代码
案例SQLSERVER:
return String.format(" %s", column);
建议代码
案例 SQLSERVER:
返回 String.format("%s", column); -- 没有符号`