当前位置:首页 > 数据库 > 正文内容

dataX:超强的数据库数据互导工具

root3年前 (2021-06-01)数据库584

安装

下载安装包
http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

然后解压
进入解压后文件的./bin
自检命令
python  datax.py ../job/job.json


在job文件夹中创建配置文件

如mysql2pg.json

{
    "job": {
        "setting": {
            "speed": {
		    "channel": 3,		    "byte": 1048576,
		    "record": 1000
            },
            "errorLimit": {
                "record": 2,
                "percentage": 0.02
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "****",
                        "password": "****",
                        "column": [
                            "*"
                        ],
		            	"splitPk" : "id",
                        "connection": [
                            {
                                "table": [
                                    "test1"
                                ],
                                "jdbcUrl": [
									"jdbc:mysql://***:***/db1"
                                ]
                            }
                        ]
                    }
                },
               "writer": {
                    "name": "postgresqlwriter",
                    "parameter": {
                        "username": "******",
                        "password": "******",
                        "column": [
                            "*"
                        ],
                        "preSql": [
                            "delete from test1"
                        ],
                        "postSql":[
					     "select count(*) from test2"
				     	],
					"batchsize":100,
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:postgresql://****:**/db1",
                                "table": [
                                    "test1"
                                ]
                            }
                        ],
			            "encoding":"utf-8"
                    }
                }
            }
        ]
    }}

参数说明

jdbcUrl

描述:目的数据库的 JDBC 连接信息。作业运行时,DataX 会在你提供的 jdbcUrl 后面追加如下属性:yearIsDateType=false&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true

     注意:1、在一个数据库上只能配置一个 jdbcUrl 值。这与 MysqlReader 支持多个备库探测不同,因为此处不支持同一个数据库存在多个主库的情况(双主导入数据情况)

          2、jdbcUrl按照Mysql官方规范,并可以填写连接附加控制信息,比如想指定连接编码为 gbk ,则在 jdbcUrl 后面追加属性 useUnicode=true&characterEncoding=gbk。具体请参看 Mysql官方文档或者咨询对应 DBA。

必选:是

默认值:无


username

目的数据库的用户名

必选:是

默认值:无


password

目的数据库的密码


必选:是

默认值:无


table

目的表的表名称。支持写入一个或者多个表。当配置为多张表时,必须确保所有表结构保持一致。

注意:table 和 jdbcUrl 必须包含在 connection 配置单元中

必选:是

默认值:无


column

目的表需要写入数据的字段,字段之间用英文逗号分隔。例如: "column": ["id","name","age"]。如果要依次写入全部列,使用表示, 例如: "column": [""]。

**column配置项必须指定,不能留空!**

注意:1、我们强烈不推荐你这样配置,因为当你目的表字段个数、类型等有改动时,你的任务可能运行不正确或者失败

    2、 column 不能配置任何常量值


必选:是

默认值:无


session

DataX在获取Mysql连接时,执行session指定的SQL语句,修改当前connection session属性

必须: 否

默认值: 空


preSql

写入数据到目的表前,会先执行这里的标准语句。如果 Sql 中有你需要操作到的表名称,请使用 @table 表示,这样在实际执行 Sql 语句时,会对变量按照实际表名称进行替换。比如你的任务是要写入到目的端的100个同构分表(表名称为:datax_00,datax01, ... datax_98,datax_99),并且你希望导入数据前,先对表中数据进行删除操作,那么你可以这样配置:"preSql":["delete from 表名"],效果是:在执行到每个表写入数据前,会先执行对应的 delete from 对应表名称

必须: 否

默认值: 空


postSql

写入数据到目的表后,会执行这里的标准语句。(原理同 preSql )

必须: 否

默认值: 空


writeMode

控制写入数据到目标表采用 insert into 或者 replace into 或者 ON DUPLICATE KEY UPDATE 语句

必选:是

所有选项:insert/replace/update

默认值:insert


batchSize

一次性批量提交的记录数大小,该值可以极大减少DataX与Mysql的网络交互次数,并提升整体吞吐量。但是该值设置过大可能会造成DataX运行进程OOM情况。

必须: 否

默认值: 1024


参考链接

https://cloud.tencent.com/developer/article/1395294

https://blog.csdn.net/tototuzuoquan/article/details/102601515

https://github.com/alibaba/DataX/blob/master/userGuid.md



扫描二维码推送至手机访问。

版权声明:本文由一叶知秋发布,如需转载请注明出处。

本文链接:https://zhiqiu.top/?id=108

分享给朋友:

相关文章

ES 修改 查询最大行数

curl  -XPUT  http://ip:port/your_index/_settings?preserve_existing=true  -H  'Content-Type: &nbs...

mysql启动失败 日志InnoDB: Ignoring the redo log due to missing MLOG_CHECKPOINT between the checkpoint 3485

mysql报错Ignoring the redo log due to missing MLOG_CHECKPOINT betweenmysql版本:5.7.33系统版本:ubuntu16.04由于电脑突然关闭,跑在VMware里面的mys...

es 迁移数据elasticdump工具的使用

安装直接使用是可以,采用docker进行迁移也是可以的,我这边采用的是docker导出数据为json文件docker run --rm -ti -v /tmp:/tmp regis...

python操作数据库动态传递数据库名/数据库表出现的问题

python操作数据库动态传递数据库名/数据库表出现的问题

环境:py3/py2 依赖包:pymsql/MySQLdb开发某项时,j对项目进行安全检查,给出sql注入风险。修改代码是发现是sql语句进行了拼接。拼接的内容是数据库名/数据表名。然后我尝试了对数据库名和数据表名进行传参方式进行...

clickhouse的表引擎以及建表

表引擎分类引擎分类引擎名称MergeTree系列MergeTree 、ReplacingMergeTree 、SummingMergeTree 、 AggregatingMergeTree     CollapsingM...

clickhouse 分区、分片简单理解

clickhouse 分区、分片简单理解

分区是表的分区,具体的DDL操作关键词是 PARTITION BY,指的是一个表按照某一列数据(比如日期)进行分区,对应到最终的结果就是不同分区的数据会写入不同的文件中。分片复用了数据库的分区,相当于在原有的分区下,作为第二层分区...