postgresql数据库COPY SQL 命令

1 篇文章 0 订阅
1 篇文章 0 订阅

官方文档:
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'   #tsv文件地址
with (
FORMAT csv,
FREEZE,
DELIMITER '\t',
escape '\',
header true,
quote '"',
FORCE_QUOTE ,
FORCE NULL,
FORCE_NOT_NULL,
encoding 'UTF8')


tsv与csv文件区别描述
csvComma-separated values,CSV是用半角逗号(’,’)作为字段值的分隔符
tsvTab-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' ;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值