使用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中,必须要用单引号.

在创建表的时候一样有用哦,下次就把创建表也添加上啦!

笔者踏过的坑,需要多多注意.如有帮助请留个评论.哈哈哈哈 .


突然发现有些网站原文不懂得转发我的博客,哎,脸呢!!!

这也是我辛辛苦苦写的东西,
转发请注明出处,谢谢.

posted @ 2019-03-15 11:47  木头人下的321  阅读(2268)  评论(0编辑  收藏  举报