我知道 COPY 是将数据从表或查询导出到输出文件的最佳实用程序。但是如果我们正在做一个像
\COPY (select * from table) to '/tmp/file.csv' WITH CSV;
它与运行选择查询并稍后保存结果有何不同(如在 GUI 工具中)或psql -c'select * from table'> output.csv
在性能和缓存方面使用 COPY 有什么优势吗?
总体思路是,我试图了解通过从 select 中读取与从 python 中的 COPY 导出数据的性能优势psycopg
使用
COPY
,服务器会格式化数据,而客户端则无需进行格式化工作。您应该对其进行测试——这应该很容易进行基准测试。
您重定向 psql 输出的示例不会产生相同的格式,因此这将是一个明显的区别。一个不太明显的可能是它在迭代导出之前将整个数据集读取到内存中,因此速度较慢并且更有可能因内存问题而崩溃。