批量生成datax同步JSON(tidb到doris)

该文章介绍了如何使用Python脚本vimgen_import_psql_config_simple.py,自动为从PostgreSQL到Doris的大量表生成DataX配置,提高迁移效率。脚本参数化配置,简化了配置文件的编写

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

img

1.问题描述

使用datax同步psql数据到doris,表的数量过多,写datax的配置文件很麻烦。鉴于此,编写了一个datax的配置文件生成脚本,可以灵活的实现一键生成配置文件,提高生产效率。
废话不多说,脚本如下

2.问题解决

vim gen_import_psql_config_simple.py

批量生成datax同步JSON(postgresql到doris)

# coding=utf-8
import json
import getopt
import os
import sys
import psycopg2

#MySQL相关配置,需根据实际情况作出修改
psql_host = "xxx"
psql_port = "xxx"
psql_user = "xxx"
psql_passwd = "xxx"

#HDFS NameNode相关配置,需根据实际情况作出修改
doris_host = "xxx"
doris_port = "xxx"
doris_http_port = "xxx"
doris_user = "xxx"
doris_passwd = "xxx"
sink_database = "xxx"
condition = True


#生成配置文件的目标路径,可根据实际情况作出修改
output_path = "/data/job"


def get_connection(database):
    return psycopg2.connect(host=psql_host, port=int(psql_port), user=psql_user, password=psql_passwd,database=database,options="-c search_path=information_schema,public")


def get_psql_meta(database, schema,table):
    connection = get_connection(database)
    cursor = connection.cursor()
    sql = "SELECT COLUMN_NAME from columns WHERE TABLE_SCHEMA=%s AND TABLE_NAME=%s ORDER BY ORDINAL_POSITION"
    curs
### 使用 DataX 实现 MySQL 数据同步Doris #### 配置环境需求 为了成功运行 DataX 工具并实现 MySQL 到 Doris 的数据同步,需满足以下软件依赖条件: - Linux 或 Windows 操作系统 - JDK 版本 1.8 及以上,建议使用 1.8 版本[^3] - Python 2 或者 Python 3 均可支持 - Apache Maven 3.x (仅用于编译 DataX) 对于已经安装好上述环境的操作系统来说,可以直接下载预编译好的 DataX 工具包来简化部署过程。 #### 下载与安装 DataX 可以通过官方提供的链接直接获取最新版的 DataX 工具包。解压后即可获得完整的执行文件及相关文档资料。 #### 准备 MySQL 数据源 确保目标 MySQL 数据库已准备好待迁移的数据表结构以及必要的权限设置。这一步骤通常涉及创建数据库连接字符串、授予适当访问权限给应用程序用户等操作[^1]。 #### 编写 JSON 配置文件 DataX 使用 JSON 文件定义读取端(Reader)、写入端(Writer)以及其他参数配置。下面是一个简单的例子展示如何构建这样的配置文件以完成从 MySQL 向 Doris 的数据传输任务: ```json { "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "your_mysql_username", "password": "your_password", "column": ["*"], "connection": [{ "jdbcUrl": ["jdbc:mysql://localhost:3306/your_database_name"], "table": ["source_table"] }] } }, "writer": { "name": "doriswriter", "parameter": { "feNodes": ["http://<FE_HOST>:8030/api/_sql?db=your_db&user=your_user&passwd=your_pwd"], "table": "target_table", "columns": ["col1", "col2", ...], "maxRetryTimes": 3, "batchSize": 10000 } } } ], "setting": { "speed": { "channel": 3 } } } } ``` 此配置指定了 `mysqlreader` 和 `doriswriter` 插件分别作为输入输出插件,并设置了相应的连接信息和其他必要选项。注意替换其中的具体值为你自己的实际情况下的相应值。 #### 执行数据同步作业 当一切就绪之后,在命令行界面切换到 DataX 解压缩后的目录下,通过如下指令启动数据同步流程: ```bash python datax.py your_config_file.json ``` 这里假设当前路径存在名为 `datax.py` 的脚本文件和自定义命名的 `.json` 格式的配置文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值