Datax使用遇到的坑
最近有个需求是要把postgresql的几个表数据迁移到mysql服务器上。我这边采用的是DataX工具,环境要求。
但Datax在使用的过程中遇到了一些坑,问题记录如下:
所使用的myjob.json文件
{
"job": {
"content": [
{
"reader": {
"name": "postgresqlreader",
"parameter": {
"column": ["xx"],
"connection": [
{
"jdbcUrl": ["jdbc:postgresql://xxx:xxx/xxx?currentSchema=xxx"],
"table": ["xxx"]
}
],
"password": "xxx",
"username": "xxx"
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"column": ["xxx"],
"connection": [
{
"jdbcUrl": "jdbc:mysql://xxx:xxx/xxx?allowMultiQueries=true&autoReconnect=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false",
"table": ["xxxx"]
}
],
"password": "xxx",
"username": "xxx",
"where": ""
}
}
}
],
"setting": {
"speed": {
"channel": 5
}
}
}
}
1、DOS控制台乱码
直接输入如下命令,新开一个窗口
CHCP 65001
2、WARN ConfigParser - 插件[pgreader,mysqlwriter]加载失败
这里报的是插件加载失败,其实这里 “reader”: {“name”: “postgresqlreader”}里面的name要对应datax目录下的plugin插件即可。
3、DB连不上
这里主要检查好IP、PORT、USER、PASSWORD、库名、DB驱动以及用户权限入手,我这里是因为密码问题。
4、Datax 相关插件源码编译失败
在maven目录下的conf里面的配置文件加上如下配置
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
5、数据类型问题
我这里遇到的是postgresql的jsonb数据类型无法转,所以在json作业配置上加上了"::varchar",具体类型转什么由各位的业务决定,这里只是提供思路。
6、writer报错
注意目标数据源的配置只能是单个,跟读数据源配置有区别。
7、遇到mysql表字段为DB关键字
在使用DataX时遇到读取或者写入的字段为MySQL的关键字时可以这样处理"xxxx
"。例如本次遇到问题,重写的json如下
{
"job": {
"content": [
{
"reader": {
"name": "postgresqlreader",
"parameter": {
"column": ["procedure"],
"connection": [
{
"jdbcUrl": ["jdbc:postgresql://xxx:xxx/map?currentSchema=xxx"],
"table": ["xxx"]
}
],
"password": "xxx",
"username": "xxx"
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"column": ["`procedure`"],
"connection": [
{
"jdbcUrl": "jdbc:mysql://xxx:xxx/xxx?allowMultiQueries=true&autoReconnect=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false",
"table": ["xxx"]
}
],
"password": "xxx",
"username": "xxx"
}
}
}
],
"setting": {
"speed": {
"channel": 8
}
}
}
}
文献参考: