datax数据抽取
执行python datax.py -r streamreader -w streamwriter命令得到job的json模板 ![在这里插入图片描述](https://img-blog.csdnimg.cn/893860a55d5f40778a5010c76bc8c81f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAV19fX1dfX1c=,size_20,color_FFFFFF,t_70,g_se,x_16){
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"querySql": "", #自定义sql,支持多表关联,当用户配置querySql时,直接忽略table、column、where条件的配置。
"fetchSize": "", #默认1024,该配置项定义了插件和数据库服务器端每次批量数据获取条数,该值决定了DataX和服务器端的网络交互次数,能够较大的提升数据抽取性能,注意,该值过大(>2048)可能造成DataX进程OOM
"splitPk": "db_id", #仅支持整形型数据切分;如果指定splitPk,表示用户希望使用splitPk代表的字段进行数据分片,如果该值为空,代表不切分,使用单通道进行抽取
"column": [], #"*"默认所有列,支持列裁剪,列换序
"connection": [
{
"jdbcUrl": ["jdbc:mysql://IP:3306/database?useUnicode=true&characterEncoding=utf8"],
"table": [] #支持多张表同时抽取
}
],
"password": "",
"username": "",
"where": "" #指定的column、table、where条件拼接SQL,可以指定limit 10,也可以增量数据同步,如果该值为空,代表同步全表所有的信息
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"column": [], #必须指定字段名,字段类型,{"name":"","tpye":""}
"compress": "", #hdfs文件压缩类型,默认不填写意味着没有压缩。其中:text类型文件支持压缩类型有gzip、bzip2;orc类型文件支持的压缩类型有NONE、SNAPPY(需要用户安装SnappyCodec)。
"defaultFS": "", #Hadoop hdfs文件系统namenode节点地址。
"fieldDelimiter": "", #需要用户保证与创建的Hive表的字段分隔符一致
"fileName": "", #HdfsWriter写入时的文件名,需要指定表中所有字段名和字段类型,其中:name指定字段名,type指定字段类型。
"fileType": "", #目前只支持用户配置为”text”或”orc”
"path": "", #存储到Hadoop hdfs文件系统的路径信息,hive表在hdfs上的存储路径
"hadoopConfig": {} #hadoopConfig里可以配置与Hadoop相关的一些高级参数,比如HA的配置。
"writeMode": "" #append,写入前不做任何处理,文件名不冲突;nonConflict,如果目录下有fileName前缀的文件,直接报错。
}
}
}
],
"setting": {
"speed": { #流量控制
"byte": 1048576, #控制传输速度,单位为byte/s,DataX运行会尽可能达到该速度但是不超过它
"channel": "" #控制同步时的并发数
}
"errorLimit": { #脏数据控制
"record": 0 #对脏数据最大记录数阈值(record值)或者脏数据占比阈值(percentage值,当数量或百分比,DataX Job报错退出
}
}
}
}
如果出现报错出现中文乱码提示:CHCP 65001执行这个命令然后再重新执行上次的命令。
用excel创建一个csv,保存的时候选择csv格式就可以。
然后再创建一个json文件。
{
"job": {
"setting": {
"speed": {
"channel": 1
}
},
"content": [{
"reader": {
"name": "txtfilereader",
"parameter": {
"path": ["E:/data.csv"],
"encoding": "gbk",
"column": [{
"index": 0,
"type": "string"
},
{
"index": 1,
"type": "string"
},
{
"index": 2,
"type": "string"
},
{
"index": 3,
"type": "string"
}
],
"fieldDelimiter": ",",
"skipHeader": "true"
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"writeMode": "insert",
"username": "root",
"password": "123456",
"column": [
"kind",
"time",
"processingDepartment",
"content"
],
"session": [],
"connection": [{
"jdbcUrl":"jdbc:mysql://localhost:3306/test2?serverTimezone=Asia/Shanghai&useLegacyDatetimeCode=false&useSSL=false&nullNamePatternMatchesAll=true&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true",
"table": ["csv1"]
}]
}
}
}]
}
}
最后执行再bin目录下执行datax.py …/job/csv_mysql.json命令。