Datax使用遇到的坑

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
       }
    }
  }
}

文献参考:

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...