KingbaseES COPY命令及签名
关键字:
KingbaseES、COPY、签名、人大金仓
概述
COPY命令
copy命令用于在文件和表之间进行数据复制,该命令包括copy to和copy from。其中copy to是指将一个表的内容复制到一个文件,而copy from是将文件中的数据复制到表中。COPY命令的格式如下:
\copy { table [ (column_list) ] | ( query ) } { from | to } { ‘filename’| program ‘command’} | stdin | stdout | pstdin | pstdout } [[ with] option [,…])] [ where condition ]
其中option可以是:
FORMAT format_name
FREEZE [ Boolean ]
DELIMITER ‘delimiter_character’
NULL ‘null_string’
HEADER [ Boolean ]
QUOTE ‘quote_character’
ESCAPE ‘escape_character’
FORCE_QUOTE ( column [,…] | *)
FORCE_NOT_NULL ( column [,…])
FORCE_NULL ( column [,…])
ENCODING ‘encoding_name’
其中table表示已有表的表名;
column_list表示要被复制的列;
query表示查询语句,将查询结果导出
filename表示输入或输出的文件名
program ‘command’表示要执行的命令。copy from中,输入从该命令的输出获取;copy to中,输出写入到该命令的标准输入;
stdin表示指定标准输入流;
stdout表示指定标准输出流;
boolean表示执行选项打开还是关闭,true、false;
FORMAT选择要读取或写入的数据格式,如txt、csv等;
DELIMITER指定分割每列的字符;
NULL指定表示一个空值的字符串
HEADER指定文件包含标题行
ENCODING指定文件的编码,如果省略则默认使用当前客户端编码;
WHERE表示cop from时指定条件,如果不满足则不会写入。
示例
copy命令可以操作的文件类型包括:txt、sql、csv、压缩文件和二进制格式。
- csv格式
- copy test1 to '/home/KES/test1.csv' delimiter '|' csv header;
- copy test1 from '/home/KES/test1.csv';
- txt格式
- copy test1 to '/home/KES/test1.txt';
- copy test1 from '/home/KES/test1.txt';
- sql格式
- copy test1 to '/home/KES/test1.sql';
- copy test1 from '/home/KES/test1.sql';
- 压缩文件
- copy test1 to program 'gzip>/home/KES/test1.gz';
- 二进制格式
- copy test1(id) to stdout binary;
- copy test1(id) from stdin binary;
签名
KES在copy命令操作二进制格式时,在头文件中增加签名(旧版本中签名为PGCOPY、新版本签名为KBCOPY)。执行copy to命令时,KES生成签名:
执行copy from命令时,KES会读取并验证二进制标头中的签名,如果签名不符合预期则报错。




