人大金仓数据库KingbaseES COPY命令及签名

221 阅读2分钟

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、压缩文件和二进制格式。

  1. csv格式
    1. copy test1 to '/home/KES/test1.csv' delimiter '|' csv header;
    2. copy test1 from '/home/KES/test1.csv';
  2. txt格式
    1. copy test1 to '/home/KES/test1.txt';
    2. copy test1 from '/home/KES/test1.txt';
  3. sql格式
    1. copy test1 to '/home/KES/test1.sql';
    2. copy test1 from '/home/KES/test1.sql';
  4. 压缩文件
    1. copy test1 to program 'gzip>/home/KES/test1.gz';
  5. 二进制格式
    1. copy test1(id) to stdout binary;
    2. copy test1(id) from stdin binary;

签名

KES在copy命令操作二进制格式时,在头文件中增加签名(旧版本中签名为PGCOPY、新版本签名为KBCOPY)。执行copy to命令时,KES生成签名:

执行copy from命令时,KES会读取并验证二进制标头中的签名,如果签名不符合预期则报错。

参考文档:

KingbaseES ksql工具用户指南及参考