COPY 是 PostgreSQL 的高性能命令,用于大量加载和导出数据——它在文件(或流)和表之间移动大量数据的速度远超个别的 INSERT 语句。它是导入/导出大型数据集的标准工具。
使用 COPY 进行快速大量加载
users (name, email, age) (FORMAT csv, HEADER );
users (FORMAT csv, HEADER );
\ users (FORMAT csv, HEADER )
COPY 是 PostgreSQL 的高性能命令,用于大量加载和导出数据——它在文件(或流)和表之间移动大量数据的速度远超个别的 INSERT 语句。它是导入/导出大型数据集的标准工具。
users (name, email, age) (FORMAT csv, HEADER );
users (FORMAT csv, HEADER );
\ users (FORMAT csv, HEADER )
COPY 在一次操作中读取/写入整个文件——比运行数千个单独的 INSERT 语句快得多。
❌ thousands of individual INSERTs:
each is a separate statement → per-statement overhead, possibly per-row transactions,
network round-trips → SLOW for large data (can be 10-100x slower)
✅ COPY:
one bulk operation, minimal overhead, optimized data path → FAST
→ For loading large datasets, COPY is the go-to; INSERTs are for small/individual rows.
COPY (SQL command) → reads/writes files on the SERVER, needs superuser/file privileges
\copy (psql command) → reads/writes files on the CLIENT, no special privileges
→ Use \copy when running from your machine against a remote database.
✓ Use COPY (not INSERTs) for large data
✓ Consider dropping/disabling indexes and constraints during a huge load, then
recreating them after (building an index once is faster than maintaining it per-row)
✓ Load within a single transaction; increase maintenance_work_mem for index rebuilds
✓ For programmatic bulk inserts, use multi-row INSERT or the driver's COPY support
COPY 是高效大量加载和导出数据的必要 PostgreSQL 工具,理解它对任何涉及大型数据集的场景都很重要——数据迁移、ETL、导入/导出、数据填充和分析,这些都是常见的现实需求。
关键价值是性能:使用单个 INSERT 语句加载大量数据非常缓慢(每条语句的开销、往返——可能慢 10-100 倍),而 COPY 将加载作为一个优化的大量操作执行,使其成为导入或导出大型数据集(数千到数百万行)的首选工具。
理解 COPY 为什么快得多(大量操作与逐行开销)可以明确何时应该使用它(大数据)与何时使用 INSERT(小数据/单个行)。
知道 COPY(服务器端 SQL 命令,需要文件访问/权限)和 \copy(psql 客户端命令,无需特殊权限——可以从您的机器对远程数据库工作)之间的实际区别对于在不同上下文中实际使用它很重要。
大量加载提示(使用 COPY 而非 INSERT、在大规模加载时删除/重建索引因为一次构建索引比逐行维护更优、在事务中加载)是大型导入的有价值的优化知识。
由于大数据操作(迁移、导入、导出、ETL)很普遍,而且 COPY 是 PostgreSQL 中处理这些操作的标准高性能方式(对于大数据的性能远优于 INSERT),理解 COPY——它的性能优势、COPY 与 \copy 的区别,以及大量加载的最佳实践——是高效移动 Postgres 中大型数据集的有价值的实用相关知识,这是一个频繁的操作需求,使用正确的工具(COPY)会产生重大差异。