博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用 PostgreSQL 的 COPY 导入导出 CSV
阅读量:7237 次
发布时间:2019-06-29

本文共 837 字,大约阅读时间需要 2 分钟。

TL;DR

无意中看到了一篇讲 的文章,才注意到 PostgreSQL 的 COPY 命令。简而言之,它用来在文件和数据库之间复制数据,效率非常高,并且支持 CSV 。

导出 CSV

以前做类似的事情都是用程序语言写,比如用程序读取数据库的数据,然后用 CSV 模块写入文件,当数据量大的时候还要控制不要一次读太多,比如一次读 5000 条,处理完再读 5000 条之类。

PostgreSQL 的 COPY TO 直接可以干这个事情,而且导出速度是非常快的。下面例子是把 products 表导出成 CSV :

COPY productsTO '/path/to/output.csv'WITH csv;

可以导出指定的属性:

COPY products (name, price)TO '/path/to/output.csv'WITH csv;

也可以配合查询语句,比如最常见的 SELECT

COPY (  SELECT name, category_name  FROM products  LEFT JOIN categories ON categories.id = products.category_id)TO '/path/to/output.csv'WITH csv;

导入 CSV

跟上面的导出差不多,只是把 TO 换成 FROM ,举例:

COPY productsFROM '/path/to/input.csv'WITH csv;

这个命令做导入是非常高效的,在开头那篇博客作者的测试中,COPY 只花了 INSERT 方案 1/3 的时间,而后者还用 prepare statement 优化过。

总结

COPY 还有一些其他配置,比如把输入输出源指定成 STDIN/STDOUT 和 shell 命令,或者指定 CSV 的 header 等等。这里不再赘述。数据库也有很多细节可挖,有些简单却非常实用。合理使用能大大提高效率。

参考资料

转载地址:http://ragfm.baihongyu.com/

你可能感兴趣的文章
建设智慧城市力破“信息孤岛”
查看>>
2015年智能家居大事记 合纵连横成主旋律
查看>>
OpenStack网络基础
查看>>
EnterpriseFrameWork框架基础功能之字典数据配置管理
查看>>
今年,全球产业互联网发展提速
查看>>
漂浮式水上光伏场址如何选择?
查看>>
CloudCC CRM观点:移动应用已成必然
查看>>
我谈软件测试
查看>>
一波未平,一波又起:“永恒之石”恶意程序利用七种NSA“网络武器”
查看>>
远程数据中心蓬勃发展
查看>>
《Effective Debugging:软件和系统调试的66个有效方法》——第14条:考虑对软件进行更新...
查看>>
面部识别是把双刃剑 取长补短是要诀
查看>>
百亿新能源发电补贴是庞氏骗局?
查看>>
DTS
查看>>
福建省政府召开常务会议 确定出台加快物联网产业发展的八条措施
查看>>
Vantage公司在圣克拉拉建设其第4个数据中心
查看>>
《Linux从入门到精通(第2版)》——1.2 Linux系统发展史和优势
查看>>
安全的发布 .NET 应用的改动到产品服务器环境
查看>>
多种负载均衡算法及其 Java 代码实现
查看>>
《IP多播网络的设计与部署(第1卷)》——2.4 多播转发
查看>>