文章大纲
最近有个需求,需要将100W 40个字段左右的 excel 格式数据录入 postgreSQL 数据库。 我想了几种办法:
- 使用psycopg2 原生 api
- 使用pgAdmin 页面 建立好table 直接导入csv
- 使用pandas to_sql 方法
- 使用 sqlalchemy 批量录入方法
- 使用python 多进程,pandas 数据清洗后用 sqlalchemy 批量录入方法
先说一下结论吧,我实验的流程是读取3个文件大小分别是3000行,30万行,70万行,清洗合并后是一个111万行40 个字段的宽表。 使用最后一种多进程批量入数据的方式,基本测试结果是,数据加载及清洗将近6分钟,数据入库6分钟。
我机器是i7 7500U 运行上述程序时候 睿频加速到3.5GHz 左右,cpu 占用40%, 数据清洗时候内存占用500-600MB 拆分入库阶段,内存占用飙升到2000MB - 4000MB 其中包含每个子进程单独占用70MB 左右。
后面且听我娓娓道来
0.基础性工作
连接类
主要作用是是数据库链接时候进行数据库链接字符串的管理