copy 是 pg 的特色命令,不是 SQL 标准命令。
CREATE temp TABLE school (
school_id int4 NOT NULL primary key,
school_code varchar(10),
school_name varchar(100),
is_star char(1)
);
INSERT INTO school ( "school_id", "school_code", "school_name", "is_star" ) VALUES ( 1, 'A001', '理想中学', 1 ), ( 2, 'A002', '红旗试验中学', 1 ), ( 3, 'A003', '外国语学校', NULL );
以下是 Windows 环境下的copy to
和copy from
命令示例:
copy to
copy to
用于将指定的查询列导出到指定文件:
COPY ( SELECT school_id, school_name FROM school ) TO 'D://fff.CSV' ( FORMAT CSV, HEADER TRUE, ENCODING GBK );
- copy to 中的路径必须是绝对路径;
- Windows 环境下件路径中的
/
要双写; - FORMAT 指定导出格式(目前只支持TXT(缺省) 和 CVS);HEADER 是否导出表头(只有当 FORMAT 为 CVS 时可用), ENCODING 导出的字符编码。
copy from
copy from
用于将外部文件中的数据导入到当前库指定的表:
COPY school ( school_id, school_code, school_name, is_star )
FROM
'D://fff.csv' ( FORMAT CSV, HEADER TRUE, ENCODING GBK, NULL 0 )
WHERE
school_name != '外国语学校';
- copy from 中的路径可以是绝对或相对路径;
- Windows 环境下件路径中的
/
要双写; - FORMAT 指定导入文件格式(目前只支持TXT(缺省) 和 CVS),;HEADER 导入文件是否包含表头(只有当 FORMAT 为 CVS 时可用), ENCODING 导入文件的字符编码;NULL 指定的字符在导入时会被转换为 NULL;
- WHERE 只能用在 copy from 命令中,用于过滤导入文件中的数据,符合过滤条件的数据行将被导入。