用途:处理 PostgreSQL 大批量数据导入、在 COPY 与 INSERT 之间选型、把 CSV 当表查询或设置跨库查询。核心原则是批量数据用 COPY,绝不写逐行 INSERT 循环。
主要能力与用法:按文件位置选择传输方式——文件在数据库服务器上用 COPY ... FROM '/abs/path'(需超级用户或 pg_read_server_files);文件在客户端用 psql 的 \copy ... FROM 'path';由应用或驱动流式提供数据则用 COPY ... FROM STDIN。性能阶梯为 COPY 远快于多行 INSERT,后者快于循环单行 INSERT。
关键模式:CSV 导入显式设置 FORMAT csv、DELIMITER、QUOTE、NULL、HEADER,避免文本格式默认值导致 22P04;COPY FREEZE 只能在同事务内新建或 TRUNCATE 目标表后使用,且不适用于分区表;v17+ 可用 ON_ERROR ignore 配合 LOG_VERBOSITY verbose 跳过并记录坏行;大加载前删除二级索引与外键约束、加载后重建并 ANALYZE;可复现数据可先载入 UNLOGGED 暂存表。
文件与跨库:file_fdw 只读地把 CSV 建为外部表直接查询;postgres_fdw 通过 CREATE SERVER、USER MAPPING、IMPORT FOREIGN SCHEMA 访问另一 PostgreSQL 库,并用 EXPLAIN VERBOSE 验证下推,批量写入可设置 batch_size。
限制:本技能不用于整库逻辑备份恢复、加载中的在线 schema 变更、在线库间变更流复制。COPY FREEZE 在已有数据的表上会被静默忽略;file_fdw 表只读不可写。ON_ERROR 与 LOG_VERBOSITY 仅适用于 text 和 csv 格式的 COPY FROM。参考资料中的 references/methods.md、examples.md、anti-patterns.md 及官方文档链接可进一步查阅。