ubuntu server下python脚本迁移数据

訾旭
2023-12-01

因为是在Ubuntu下,所以安装python、pip、pymysql等都极其方便,sudo apt-get install pymysql,

但是在安装cx_Oracle(连接oracle的模块)出现许多问题,查阅相关资料,发现这边文章能够帮我解决,希望大家少走点弯路。http://www.tbdazhe.com/archives/602

1.安装python

2.安装pip、pymysql、cx_oracle

3.import module

主要这次我想通过python脚本,定时把数据从oracle库导入mysql库

__author__ = 'young'
# coding=UTF-8
import os

os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

import cx_Oracle
# 导入pymysql的包
import pymysql


def synctask():
    '''Hello cx_Oracle示例:

    1)打印数据库版本信息.
    2)查询表数据.'''

    conn = cx_Oracle.connect("username/password@ip:1522/health")
    cur = conn.cursor()

    # 获取一个数据库连接,注意如果是UTF-8类型的,需要制定数据库
    conn_mysql = pymysql.connect(host='ip', user='smart', passwd='smart', db='smart', port=3306,
                                 charset='utf8')
    cur_mysql = conn_mysql.cursor()  # 获取一个游标
    try:
        cur_mysql.execute("insert into user(name) values('123')")
        print "Oracle Version:%s" % conn.version
        print "Table test rows:"
        sql = 'SELECT *  FROM t_user where pat_id < 2000 order by pat_id'
        cur.execute(sql)
        for row in cur:
            print row[1].decode('utf-8')
            data = row[1].decode('utf-8')

    finally:
        conn_mysql.commit()
        conn.commit()
        conn_mysql.close()
        cur_mysql.close()
        cur.close()
        conn.close()


synctask()

 ubuntu下kettle的配置

1. 把pdi-ce-5.2.0.0-209.zip包到指定目录,unzip解压到
sudo  unzip pdi-ce-5.2.0.0-209.zip /home/
2. 授予权限,data-integration目录下shell脚本
chmod +x *.sh
3.把oracle、mysql的jar包上传到data-integration/lib目录下
4.在data-integration 目录,键入“./kitchen.sh”回车,如果有帮助信息则表示kettle 环境部署成功
5.把在windows下搭建的kjb、ktr放入到制定目录,如
sudo mv sync_mysql.ktr sync_mysql.kjb /home/kettlejob/
6.需记得把kjb中使用ktr转换任务的路径配置成linux的目录
7.在data-integration 目录,执行一个kettle作业
sh kitchen.sh -file:/home/kettlejob/sync_mysql.kjb -level:Detailed
结论:
使用kettle比起我自己用python写脚本速度快得不止一倍,我表示还是kettle使用比较有效果。
 类似资料: