python实现Oracle/Mysql ETL 导入greenplum 使用说明

一、配置文件 :config 参数说明:

[Path]
#脚本解压目录
Path =  /home/kettle/PyETL/
[Url]
#源URL:支持Oracle / Msql 
#Oracle 源
SrcUrl = {'dbtype':'oracle','user': '用户名','passwd': '密码', 'tns': 'ip:1521/server_name',  'encoding': 'utf-8'}
#mysql源
#SrcUrl = {'dbtype':'mysql','user': '用户名','passwd': '密码','dbname': '库名', 'host': 'IP','port':3306}
#目标URL 仅支持greenplum
DstUrl = {'dbtype':'greenplum','user': '用户名','passwd': '密码', 'dbname': '库名','host':'ip','port':'5432'}
#Tab1 : 名字随意起,支持写多个
[Tab1]
#'Exp':'y' 导出:y/n  | 'Imp':'y' 导入:y/n
ExpImp = {'Exp':'y','Imp':'y'}
#需要导出表的列表:
#Tab=表1,表2,........
#或
#Tab=表1:分区名1:分区名2,表2:分区名1:分区名2......
Tab= test
#column =  '列1','列2','列3','列4'
#或 
#column =  *  -- 所有列
#需要导入的列:与greenplum里的列一致
Column =  *
#查询条件:
#Condition=<唯一索引列或主键>:条件
Condition= id:last_update_date > trunc(sysdate - 1)  and last_update_date < trunc(sysdate)

二、修改main.py里的代码:

 

三、注意事项:

1、支持按分区导入:

        参数设置:

        #tables=表1:分区名1:分区名2,表2:分区名1:分区名2......

2、数据中存在的“;”转换为“|”,避免与生成的csv格式的";"冲突

        代码位置:

        py_tool=>脚本:DataBase.py=>函数:WriteCSV:

d.DataFrame(dat.replace(';','|',regex = True)).to_csv(csv_dir,sep=';',quoting=3,header = False,index=False,encoding='utf-8')

3、脚本运行环境python3.6

因为环境为python3.6,如果使用crontab,需要写入shell脚本:如下:

#!/bash/bin
#因为需要连接Oracle需要安装客户端:
export ORACLE_HOME=/u01/oracle/instantclient_11_2
export SQLPATH=/u01/oracle/
export TNS_ADMIN=/u01/oracle/
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH 
export PATH=$PATH:$ORACLE_HOME
#调用python3脚本
python3 /home/kettle/PyETL/py_main/Main.py config1.ini Log1 1> /dev/null 2>&1


crontab -l
#日志清理脚本,每天第一个执行:
02 00 * * * sh /home/kettle/PyETL/py_sh/PyClearLog.sh
#上面写的shell脚本:可以写多少,实现并行
03 00 * * * sh /home/kettle/PyETL/py_sh/py1.sh
04 00 * * * sh /home/kettle/PyETL/py_sh/py2.sh

四、目录说明:

tree PyETL/
PyETL/
├── CheckETLRecord.sh  #监控脚本
监控脚本:异常输出说明:
                       表  |D:目标(S:源):少300条记录
                       test|D:-300
├── py_CheckRecord     #数据验证目录
│   ├── CheckRecord    #数据验证日志输出
├── py_conf            #配置目录
│   ├── config1.ini    #配置文件01
│   ├── config2.ini    #配置文件02
├── py_CsvDat          #按日期目录存储将数据以csv格式存放。
│   └── 2022-02-28    #导入成功会删除,导入失败还会存在,为空代表全部成功导入
├── py_log            #日志输出目录
│   └── 2022-02-28    #按日期存放
│       ├── Log1      #并行1日志文件
│       │   ├── py_etl_finish.log #操作成功日志
│       │   ├── py_etl.log        #操作全部日志
│       │   └── py_etl_warning.log #操作报警日志
│       ├── Log2                   #操作成功日志
│       │   ├── py_etl_finish.log
│       │   ├── py_etl.log
│       │   └── py_etl_warning.log
│       └── PyClearLog.log   #每天操作的日志清理日志
├── py_main
│   └── Main.py  #主程序代码
├── py_sh        #shell 代码目录
│   ├── py1.sh   #shell 脚本里调用python程序
│   ├── py2.sh
│   └── PyClearLog.sh #日志清理脚本
└── py_tool
    ├── DataBase.py  #数据库操作代码
    ├── DB_Conn.py   #数据库连接池
    ├── Log.py       #日志代码

五、执行:

               配置文件     日志文件名	
python3 Main.py config1.ini Log1

六、代码下载:

python实现Oracle/MysqlETl导入greenplum数据库。-Linux文档类资源-CSDN文库

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

two_rain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值