使用pandas導出PostgreSQL 模式下的所有表數據並保存


PostgreSQL

PostgreSQL 是一個非常強大的數據庫,它是一個免費的對象-關系數據庫服務器(數據庫管理系統).PostgreSQL支持大部分 SQL 標准, 在語句上也有很大的相似的地方,但是它也增加了新的數據類型,亦可以儲存矢量數據信息,比如地理信息.現在也有越來越多的人開始使用postgresql數據庫.更多詳情信息請在  官方社區(中文) 中查看

批量導出模式中的所有表數據

筆者也才剛開始接觸,也有很多不足的地方,后期要知道有優化的地方我會再次修改的.

話不多說直接開始我們需要用的:使用pandas批量導出數據,pandas 不得不數是一個非常強大數據處理工具,他可以直接連接數據庫讀取其中的數據

直接來代碼

import pandas as pd
import psycopg2         # pip install psycopg2

# 連接數據庫
# database: 需要連接的數據庫名
# user:     使用用戶,默認就用postgres
# password: 數據庫密碼
# host:     端口號
conn = psycopg2.connect(database='58TC',user='postgres',password='123456',host=5432)

# 獲取模式下的所有表名, 返回結果是dataframe
# pg_tables: 不需要改,獲取表名
# schemaname: 你需要導出的數據的模式名
df_tables = pd.read_sql_query("select * from pg_tables where schemaname='2019-3-5'",con=conn)
tables = df_tables['tablename']

到這一步,我們就能獲取模式下的所有表的名字,接下來我們只需要讀取表中的內容即可

# 將表中的數據進行儲存
for city_table in tables:
    # 獲取當前表中的所有數據
    df = pd.read_sql_query('select * from "2019-3-5"."%s"' % city_table,con = conn)
    
    # 儲存路徑,存儲為excel
    path = 'C:/PostgreSQL/%s.xlsx' % city_table          
    df.to_excel(path,encoding='utf-8')

# 關閉數據庫
conn.close

這樣我們就完成批量導出模式中的數據啦.不過這里邊有很深的坑需要注意.

特別注意

當你使用查詢語句的時候尤其要注意符號的問題,在PostgreSQL自帶的可視化平台pgAdmin4中,比如說

'select * from "2019-3-5"."%s"' % city_table

模式表名必須要用雙引號,如果使用單引號就會報錯.但是在限制語句where中,必須要用單引號.

在創建表的時候一樣有用哦,下次就把創建表也添加上啦!

筆者踏過的坑,需要多多注意.如有幫助請留個評論.哈哈哈哈 .


突然發現有些網站原文不懂得轉發我的博客,哎,臉呢!!!

這也是我辛辛苦苦寫的東西,
轉發請注明出處,謝謝.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM