本文介绍如何通过\COPY命令,将本地的文本文件数据导入云原生数据仓库AnalyticDB PostgreSQL版数据库。
注意事项
由于\COPY命令需要通过Master节点进行串行数据写入处理,因此无法实现并行写入大批量数据。如果要进行大量数据的并行写入,请使用基于OSS的数据导入方式。通过OSS导入数据,请参见使用OSS外表高速导入OSS数据。
\COPY与COPY命令的区别
相同点:
\COPY与COPY命令语法上没有任何区别。更多关于两种命令的使用方法,请参见COPY。
不同点:
\COPY为psql的操作指令;COPY为数据库指令。
\COPY命令支持操作FILE、STDIN和STDOUT文件;COPY命令仅支持操作STDIN和STDOUT文件,不支持操作FILE文件。
说明COPY命令需要SUPERUSER权限才支持操作FILE文件,目前AnalyticDB PostgreSQL不提供SUPERUSER权限。
语法
\COPY导入数据的语法如下:
\COPY table [(column [, ...])] FROM {'file' | STDIN}
[ [WITH]
[OIDS]
[HEADER]
[DELIMITER [ AS ] 'delimiter']
[NULL [ AS ] 'null string']
[ESCAPE [ AS ] 'escape' | 'OFF']
[NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']
[CSV [QUOTE [ AS ] 'quote']
[FORCE NOT NULL column [, ...]]
[FILL MISSING FIELDS]
[[LOG ERRORS [INTO error_table] [KEEP]
SEGMENT REJECT LIMIT count [ROWS | PERCENT] ]
说明 AnalyticDB PostgreSQL支持使用JDBC执行COPY语句,JDBC中封装了CopyIn方法,具体信息,请参见Interface CopyIn。
示例
\COPY test1 FROM '/path/to/localfile';