postgresql 不同數據庫不同模式下的數據遷移

編寫不容易,轉載請注明出處謝謝,

數據遷移

因為之前爬蟲的時候,一部分數據并沒有上傳到服務器,在本地。本來用的就是postgresql,也沒用多久,數據遷移的時候,也遇到了很多問題,第一次使pg_dump xx > filename進行數據備份遷移的時候,發現恢復后的數據,和原來的數據庫,模式一樣,后來這種方法就被我舍棄了。

后來想到把原來的數據庫中數據使用pandas導出來,再次存入新的數據庫中,可能有一點麻煩,但是我覺得這種方法挺好用的。下邊就介紹這種方法。

獲取需要遷移數據庫中模式下的所有表名

import pandas as pd
import psycopg2# 連接數據庫
conn = psycopg2.connect(database='58TC',user='postgres',password='123456',host='127.0.0.1',port=5432)
# 獲取模式下的所有表的名字
tables = pd.read_sql_query("select * from pg_tables where schemaname='2019_3_11'",con=conn)
tables.head()

1629495-20190410095621552-1621777707.png

當前模式下的所有表

table_list = tables['tablename']

DataFrame中的數據寫入postgresql

此處我借鑒的網上的一種方法,原文是哪里,我已經忘記了,感謝他的分享,下次找到再補上去。因為單獨使用df.to_sql速度太慢了,我的數據想還挺大的,使用sqlalchemy和copy語句能大幅度提到寫入效率。

# df 寫入數據庫import io
import pandas as pd
from sqlalchemy import create_enginedef write_to_table(df, table_name, if_exists='fail'):db_engine = create_engine('postgresql://postgres:xxxxxx@XXXXX/***')# 初始化引擎# db_engine = create_engine('postgresql://user:password@host/database')# 初始化引擎string_data_io = io.StringIO()      # 內存緩沖粗進行讀寫操作df.to_csv(string_data_io, sep='|', index=False)pd_sql_engine = pd.io.sql.pandasSQL_builder(db_engine)table = pd.io.sql.SQLTable(table_name, pd_sql_engine, frame=df,index=False, if_exists=if_exists,schema = '2019-3-11-particulars')table.create()string_data_io.seek(0)string_data_io.readline()  # remove header# 連接數據庫with db_engine.connect() as connection:with connection.connection.cursor() as cursor:  # 游標copy_cmd = '''COPY "2019-3-11-particulars"."%s" FROM STDIN HEADER DELIMITER '|' CSV''' %table_name# copy語句, 2019-3-11-particulars新數據庫中的模式名print(copy_cmd)cursor.copy_expert(copy_cmd, string_data_io)     # 執行語句connection.connection.commit()

pd.io.sql.pandasSQL_builder() PandasSQL子類
pd.io.sql.SQLTable() 用于將panda表映射到SQL表

參數說明:

  • table_name表名,
  • pd_sql_engine sql引擎,
  • framedf,
  • index,索引
  • if_exists,添加方式參數有
    append表存在追加, fail,表存在跳過, replace,表存在刪除重建
  • schema 模式名

到此為止,基本工作完成,最后就是調用函數,執行遷移

for city_table in city_list:# 需要遷移的城市列表df = pd.read_sql_query('select * from "2019_3_12"."%s"' % city_table, con=conn)try:write_to_table(df,city_table)except Exception as e:print('c城市:',city_table,'錯誤',e)print(city_table,'導入完成')
原文鏈接: https://www.cnblogs.com/liqk/p/10682274.html
轉載請說明出處.

轉載于:https://www.cnblogs.com/liqk/p/10682274.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/251937.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251937.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251937.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Oracle中主鍵自增長

最近在學習Oracle和MySql,MySql有自動配置主鍵自增長auto_increment,這樣在輸入數據的時候可以不考慮主鍵的添加,方便對數據庫的操作。 在Oracle中設置自增長首先用到sequence序列; 以創建學生表為例: create table St…

3.單例模式

public class Singleton {//定義私有的靜態變量 private static Singleton singleton;//私有化構造函數private Singleton(){}//獲取實例public static Singleton getInstance(){//同步前判斷避免同步的性能損耗if(nullsingleton){//預防多線程問題synchronized(Singleton.clas…

docker與mmdetection

這里不再介紹 mmdetection 的安裝和配置,使用 mmdetection 較簡單的方法是使用已安裝 mmdetection 的 docker 容器。這樣直接省去了安裝 mmdetection 的過程,讓重心放在模型訓練上! 如果你對 docker 和 mmdetection 還不是很熟悉&#xff0c…

互聯網平臺掘金三四五線城市,你需要知道的9.9個真相

互聯網上半場結束,一二線城市流量紅利消失,許多互聯網平臺、投資機構一度經歷至黑之夜。融資失敗、公司倒閉、大裁員迭出。對比鮮明的是,深耕三四五線城市的互聯網平臺正在迅猛崛起。春節期間,小部分敏銳的業者注意到互聯網產品在…

平滑重啟更新(GR機制)

平滑重啟更新(GR機制) 什么是平滑啟動機制 是一種在協議重啟時保證轉發業務不中斷的機制。什么時候用到平滑重啟 平滑重啟一般應用于業務更新或者版本發布過程中,能夠避免因為代碼發布重啟服務導致的暫時性服務不可用的影響。ngnix 平滑重啟和…

正斜杠( / )和反斜杠( \ )的區別

反斜杠“\”是電腦出現了之后為了表示程序設計里的特殊含義才發明的專用標點。所以除了程序設計領域外,任何地方都不應該使用反斜杠。 如何區分正反斜杠 英語:"/" 英文是forward slash, “\" 是backward slash形象些比喻的話,…

MMDetectionV2 + Colab

MMDetectionV2 Colab 超詳細教程及踩坑實錄 文章目錄 前言一、環境配置二、準備自己的數據集 Aug.14更新三:修改config文件 3.1 文件結構3.2 (本地)修改config文件 3.2.1 (本地)構造自己模型的權重文件3.2.2 &#x…

剛剛,OpenStack 第 19 個版本來了,附28項特性詳細解讀!

剛剛,OpenStack 第 19 個版本來了,附28項特性詳細解讀! OpenStack Stein版本引入了新的多云編排功能,以及幫助實現邊緣計算用例的增強功能。 OpenStack由一系列相互關聯的項目組成,這些項目可以以不同的組合方式組合在…

SQL作業:綜合練習(二)的返評

一:作業題目:綜合練習(二) 二:題目要求: 1、創建數據庫CPXS,保存于E盤根目錄下以自己學號姓第一個字母(阿拉伯數字大寫字母)方式創建的文件夾中,初始大小5MB&…

caffe cifar10試跑問題總結

caffe cifar10試跑問題總結 [daniel] 寫了一個腳本可以直接用來添加環境變量:/Users/songdanzju/daniel_script/export_for_ananconda.sh#! /bin/bash export PATH~/ananconda/bin:$PATH export DYLD_FALLBACK_LIBRARY_PATH~/anaconda:~/anaconda/lib:/usr/local/l…

paddlepaddle-VisualDL2.0對項目進行可視化調參

如果需要更好的閱讀體驗,可以在ai studio上fork該項目:使用VisualDL2.0對項目進行可視化調參 調參是深度學習必須要做的事情。數據和模型處理好后,需要進行模型訓練,這個時候就需要進行調參了。一種好的參數配置,可以…

第一、二次實訓作業

1.編寫程序: 聲明一個整型變量a,并賦初值5,在程序中判斷a是奇數還是偶數,然后輸出判斷的結果。 package 判斷奇偶; public class liux { public static void main(String[] args){ int x5; if(x%20){ System.out.println("這…

推薦一款作圖工具

以前看到別人的時序圖覺得好好看,然后就想這都是用的什么工具畫出來的呢?然后看到了一個師兄用的這個工具,真的挺好用的。這是是試用版的界面。類圖我覺著看起來效果都挺不錯的。轉載于:https://www.cnblogs.com/tuhooo/p/8874410.html

【codeforces】【比賽題解】#849 CF Round #431 (Div.2)

cf的比賽越來越有難度了……至少我做起來是這樣。 先看看題目吧:點我。 這次比賽是北京時間21:35開始的,算是比較良心。 【A】奇數與結束 "奇數從哪里開始,又在哪里結束?夢想從何處起航,它們又是否會破滅呢&#…

PaddleDetection支持的數據格式

PaddleDetection支持的數據格式 目前#PaddleDetection支持43種數據格式:coco voc widerface。在這里我們主要說明一下如何使用自定義COCO進行目標檢測、實例分割;如何使用自定義VOC數據集進行目標檢測。在PaddleDetection新的版本中,我們將數…

[dts]Device Tree機制【轉】

轉自:https://www.cnblogs.com/aaronLinux/p/5496559.html 轉自:http://blog.csdn.net/machiner1/article/details/47805069 ------------------Based on linux 3.10.24 source code 參考/documentation/devicetree/Booting-without-of.txt文檔 目錄 1.…

AntiSamy測試

AntiSamy為owasp針對xss提供的處理庫,可以配置xml策略來決定過濾的內容,比如標簽、屬性、css等,自定義策略給開發人員使用成本比較高,AntiSamy也提供了幾個內置的策略,其安全級別也不同,過濾的內容也不一樣…

1625 數字金字塔

1625 數字金字塔 鏈接:http://codevs.cn/problem/1625/ USACO 時間限制: 1 s空間限制: 128000 KB題目描述 Description考慮在下面被顯示的數字金字塔. 寫一個程序來計算從最高點開始在底部任意處結束的路徑經過數字的和的最大. 每一步可以走到下方的點也可以到達右…

ubuntu下的能安裝的百度網盤的資源最新網址

Index of /deepin/pool/non-free/d/deepin.com.baidu.pan/

C# 匿名委托、匿名方法、匿名對象、Lambda表達式

C# 匿名委托、匿名方法、匿名對象、Lambda表達式 原文:C# 匿名委托、匿名方法、匿名對象、Lambda表達式一、匿名類型可通過使用 new 運算符和對象初始值創建匿名類型。示例:var v new { Name "Micro", Message "Hello" };var v new[] { …