postgresql copy 命令示例

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 tocopy 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 命令中,用于过滤导入文件中的数据,符合过滤条件的数据行将被导入。

发表评论