官方文档:
http://www.postgres.cn/docs/13/sql-copy.html
COPY table_name [ ( column_name [, ...] ) ]
FROM { 'filename' | PROGRAM 'command' | STDIN }
[ [ WITH ] ( option [, ...] ) ]
[ WHERE condition ]
COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
TO { 'filename' | PROGRAM 'command' | STDOUT }
[ [ WITH ] ( option [, ...] ) ]
copy 表名(字段1, 字段2, 字段3,...)
from 'C:\sourceData.tsv'
with (
FORMAT csv,
FREEZE,
DELIMITER '\t',
escape '\',
header true,
quote '"',
FORCE_QUOTE ,
FORCE NULL,
FORCE_NOT_NULL,
encoding 'UTF8')
tsv与csv文件 | 区别描述 |
---|
csv | Comma-separated values,CSV是用半角逗号(’,’)作为字段值的分隔符 |
tsv | Tab-separated values ,TSV是用制表符(tab,’\t’)作为字段值的分隔符 |
with后面参数设置: | 详细描述 |
---|
format | 指定导入的文件格式为csv格式,format可省略 |
FREEZE | 请求复制已经完成了行冻结的数据,就好像在运行 VACUUM FREEZE命令之后复制。 |
delimiter | 制表符 |
escape | 指定了在引号中的转义字符为反斜杠,这样即使在引号字串中存在引号本身,也可以用该字符进行转义,变为一般的引号字符,而不是字段终结 |
header true | 指定文件中存在表头。如果没有的话,则设置为false |
quote | 以双引号作为字符串字段的引号,这样它会将双引号内的内容作为一个字段值来进行处理 |
FORCE NULL | 将带引号的空字符串转换为NULL。仅在COPY FROM中和使用CSV格式时才允许使用此选项。 |
FORCE_QUOTE | 强制必须对每个指定列中的所有非NULL值使用引用。 NULL输出不会被引用。如果指定了*, 所有列的非NULL值都将被引用。只有在 COPY TO中使用CSV格式时才允许 这个 |
FORCE_NOT_NULL | 不要把指定列的值与空值串匹配。在空值串就是空串的默认情况下, 这意味着空串将被读作长度为零的字符串而不是空值(即使它们没有 被引用)。只有在COPY FROM中使用 CSV格式时才允许这个选项。 |
encoding | 编码格式 |
\copy "public".phm_2070toitsu_unyo_hizuke_mst (
kaikei_ym
, unyo_ymd_kbn
, unyo_ymd
, toroku_ymdhms
, toroku_sha_id
, toroku_shori_id
, henko_ymdhms
, henko_sha_id
, henko_shori_id )
FROM 'data/work/%INPUT_FILE%'
WITH
CSV
DELIMITER ' '
FORCE NULL
kaikei_ym
, unyo_ymd_kbn
, unyo_ymd
, toroku_ymdhms
, toroku_sha_id
, toroku_shori_id
, henko_ymdhms
, henko_sha_id
, henko_shori_id
ENCODING 'UTF-8' ;