学习 Python3 使用 DataX 读取 csv 文件,写入另一个 csv 文件

在这里插入图片描述

DataX 简介

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

Features

DataX 本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的 Reader 插件,以及向目标端写入数据的 Writer 插件,理论上 DataX 框架可以支持任意数据源类型的数据同步工作。同时 DataX 插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。

DataX详细介绍

请参考:DataX-Introduction

DataX安装部署及小试

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

下载后的包名:datax.tar.gz

解压后 {datax} 目录下有 {bin conf job lib log log_perf plugin script tmp} 几个目录

安装

将下载后的压缩包直接解压后可用,前提是对应的 java 及 python 环境满足要求。

System Requirements

  • Linux
  • JDK(1.8以上,推荐1.8)
  • Python(推荐Python2.6.X)
  • Apache Maven 3.x (Compile DataX)

由于我本地 python 为 3.7.0 ,所以把 [datax_hoem]/bin 目录下的三个py文件修改成了符合 python3 语法要求的文件,执行也没报错,
修改后的文件,如需要可下载替换:https://github.com/TwoThreeWang/DataX_Python3

测试

测试配置了一个读取 csv 写入到另一个 csv 的 json

  1. 第一步、创建作业的配置文件(json格式)
    test.json
{
    "setting": {},
    "job": {
        "setting": {
            "speed": {
                "channel": 2
            }
        },
        "content": [
            {
                "reader": {
                    "name": "txtfilereader",
                    "parameter": {
                        "path": ["E:\\test.csv"],
                        "encoding": "UTF-8",
                        "column": [
                            {
                                "index": 0,
                                "type": "long"
                            },
                            {
                                "index": 1,
                                "type": "long"
                            },
                            {
                                "index": 2,
                                "type": "long"
                            }
                        ],
                        "fieldDelimiter": ",",
						"skipHeader": "False"
                    }
                },
                "writer": {
                    "name": "txtfilewriter",
                    "parameter": {
                        "path": "E:\\test",
                        "fileName": "test",
                        "writeMode": "truncate",
                        "format": "yyyy-MM-dd",
						"header":['id', 'name', 'age']
                    }
                }
            }
        ]
    }
}

TxtFileReader 参数说明:https://github.com/alibaba/DataX/blob/master/txtfilereader/doc/txtfilereader.md
所有类型参数说明:https://github.com/alibaba/DataX

在这里插入图片描述

  1. 第二步:启动 DataX
python datax.py E:\DataX-json\test.json

在这里插入图片描述
在这里插入图片描述

问题及解决

  • Python 版本要为 2,原因前面已经说过了,可手动修改为 3 的语法
  • cmd 乱码解决:输入 CHCP 65001
  • 数据库中的数据中文乱码解决:在 json 文件中 jdbcUrl 项加上:?characterEncoding=utf8
"jdbcUrl": ["jdbc:mysql://127.0.0.1:3306/dq?characterEncoding=utf8"]

参考:

  1. https://blog.csdn.net/qq_37552993/article/details/80235010
  2. https://github.com/alibaba/DataX
  3. https://www.imooc.com/article/15640#

猜你喜欢

转载自blog.csdn.net/weixin_41287692/article/details/83620261
今日推荐