用python進行資料庫資料遷移
現要將mysql資料庫上每5秒查詢一次結果並覆蓋寫入到postgresql中去,
實現的方法有很多:
一、用shell,將查詢出來的資料放到中間文字,再load到pg中。這種方法資料要落地,而且這臺伺服器上必須要安裝mysql和pg,才能遠端連線。
二、用kettle實現,在linux上使用較麻煩,殺雞焉用牛刀。
三、使用python,linux基本都自帶,需要安裝MySQLdb和psycopg2模組。
......
這次主要介紹python實現方法
因為涉及到兩種資料庫,先安裝MySQLdb和psycopg2模組。
這次主要介紹python實現方法
因為涉及到兩種資料庫,先安裝MySQLdb和psycopg2模組。
安裝MySQLdb模組請見http://blog.itpub.net/29989552/viewspace-1805409/
安裝psycopg2模組可以用yum安裝
[root@trcloud-gtt-dw python]# yum install python-psycopg2
程式碼:
#匯入MySQLdb和psycopg2模組
import MySQLdb
import psycopg2
#建立mysql連線,透過cursor獲取遊標,用execute獲取查詢結果
conn=MySQLdb.connect(host='192.168.129.15',port=3306,user='root',passwd='123456') cursor1=conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) cursor1.execute("select id,name from test.fader where id=1") rows=cursor1.fetchall()
#如果sql語句很長影響指令碼的排版時,可以將sql寫到檔案中,透過讀取檔案執行。
#file=open("/root/python/root/python/update_home_data.txt") #sql=file.read() #cursor1.execute("%s"%(sql)) #file.close() #rows=cursor1.fetchall()
#建立pg連線,透過cursor獲取遊標,先清空目標表
conn2 = psycopg2.connect(database="edw", user="gpadmin", password="123456", host="172.30.248.10", port="5432")
cursor2 = conn2.cursor()
cursor2.execute("truncate work_test.fader")
#迴圈mysql中獲取的結果,並插入到pg中
for list in rows: id=list['id'] name=list['name'] cursor2.execute("insert into work_test.fader(id,name) values('%s','%s') "%(id,name)) cursor1.close() cursor2.close() conn.commit() conn2.commit() conn.close() conn2.close()
再使用crontab每5秒執行一次注:這種方法只適合小數量的跨庫資料準實時傳輸,因為插入的時候是一條一條的插入,不是批次插入會有大量的commit操作。如果資料量大會對關係型資料庫的效能有影響(這和關係型資料庫操作日誌快取落盤機制有關,在這裡就不過多闡述)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29989552/viewspace-2130801/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用rman遷移資料庫資料庫
- 資料庫遷移資料庫
- 使用dbeaver 用csv 檔案進行資料遷移
- Oracle資料庫中資料行遷移與行連結Oracle資料庫
- 資料庫上雲實踐:使用Ora2pg進行資料庫遷移資料庫
- redis資料庫遷移Redis資料庫
- 資料庫遷移 :理解資料庫
- laravel資料庫遷移Laravel資料庫
- SpringBoot資料庫管理 - 用Liquibase對資料庫管理和遷移?Spring Boot資料庫UI
- 雲資料庫管理與資料遷移資料庫
- 用begin backup的方式遷移資料庫資料庫
- linux mysql資料庫遷移LinuxMySql資料庫
- django資料庫遷移-15Django資料庫
- 資料庫遷移手記資料庫
- 遷移MySQL 5.7資料庫MySql資料庫
- 資料庫遷移神器——Flyway資料庫
- dm資料庫遷移命令資料庫
- SQL Server資料庫遷移SQLServer資料庫
- EF Core 小技巧:遷移已經應用到資料庫,如何進行遷移回退操作?資料庫
- 遷移資料庫資料考慮問題資料庫
- Oracle資料庫(資料泵)遷移方案(上)Oracle資料庫
- Oracle資料庫(資料泵)遷移方案(下)Oracle資料庫
- mongodb資料庫備份與恢復(資料庫資料遷移)MongoDB資料庫
- 使用資料泵(expdp、impdp)遷移資料庫流程資料庫
- dnf資料庫備份&遷移資料庫
- OGG資料庫遷移方案(一)資料庫
- OGG資料庫遷移方案(二)資料庫
- OGG資料庫遷移方案(三)資料庫
- OGG資料庫遷移方案(四)資料庫
- 資料庫邏輯遷移方案資料庫
- MySQL資料庫遷移與MySQL資料庫批量恢復MySql資料庫
- 使用impdp,expdp資料泵進入海量資料遷移
- 達夢資料庫資料檔案遷移過程資料庫
- 用prebuild mv 方法遷移資料Rebuild
- 無外網Oracle資料庫遷移Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(上)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(中)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(下)Oracle資料庫
- Laravel migration (資料庫遷移) 的使用Laravel資料庫