南大通用GBase 8a 加载和导出语法的对比

GBase 8a的加载和导出,一些核心参数是相同的,本文简单对比下语法,列出相同和不通的地方。

属性加载导出备注
LOAD DATA infileSELECT INTO OUTFILE
文件file_listfile_name加载支持多个文件
导出只能是1个文件名、
字符集CHARACTER SETCHARACTER SET
数据模式DATA_FORMAT
数据模式包含行分隔符HAVING LINES SEPARATOR
NULL值NULL_VALUENULL_VALUE加载支持不超过 15 个任意字符的组合
导出最大支持字符数为 32。默认为“\N”
字段-分隔符TERMINATED BYTERMINATED BY加载支持不超过 15 个任意字符的组合
导出最大支持字符数为 10
字段-包围符ENCLOSED BY[OPTIONALLY] ENCLOSED BY 加载支持任意单字符
导出支持任意单字符,OPTIONALLY为只处理字符类型
字段-保留空格PRESERVE [LEADING | TRAILING] BLANKS
字段-自动补齐AUTOFILL
字段-定长加载的数据长度LENGTHLENGTH定长模式。
字段-字段对应关系TABLE_FIELDS
行分割符lines terminated by lines terminated by 加载和导出最大支持字符数为 10
允许最多错误记录行数MAX_BAD_RECORDS
时间类型格式DATETIME FORMAT如果日期有其它格式,需要在table_fields里单独指定
日期类型格式DATE FORMAT
时间戳类型格式TIMESTAMP FORMAT
时间格式TIME FORMAT
记录错误数据TRACE
错误数据保存位置TRACE_PATH
数据文件不切割NOSPLIT
分发节点并行度PARALLEL
分发节点数量MAX_DATA_PROCESSORS
最小切分尺寸MIN_CHUNK_SIZE
忽略不存在的文件SKIP_BAD_FILE
设置未加载的列的值SET
忽略开头的行数IGNORE NUM LINES
文件格式FILE_FORMAT用来指定被加载文件的格式。枚举型参数,取值为UNDEFINED 、 UNCOMPRESSED 、 GZIP 、 SNAPPY 、 LZO , 默 认 为UNDEFINED。指定为 UNDEFINED,表示不指定格式,按文件后缀自动判断文件格式;指定为 UNCOMPRESSED,表示按普通文本方式加载文件;指定为 GZIP,表示按 GZIP 格式加载文件;指定为 SNAPPY,表示按 SNAPPY格式加载文件;指定为 LZO,表示按 LZO 格式加载文件。
转义符ESCAPED BY导出指定单个字符为转义标识符,默认\
BLOB类型的处理BLOBMODE加载在TABLE_FIELDS里指定导出用这个关键字指定,TYPE_TEXT、TYPE_BASE64、TYPE_URL
LINES STARTING BY行起始符,支持多个字符,最大支持字符数为 10。默认为空
DOUBLE_ENCLOSED BY有转义符(包括默认),则与ENCLOSED相同。
转义符设置为空时,如果某字段满足使用字段包围符的条件,且该字段中还有与字段包围符相同的字符,则将该字符通过双写的方式自转义
OUTFILEMODE BY导出方式,可选值为:LOCAL 或 HDFS。LOCAL:导出本地文件,HDFS:导出 HDFS 文件。默认为 LOCAL 方式导出。
WRITEMODE BY写入方式,可选值为:NORMAL 或 OVERWRITES。
NORMAL:如果文件已存在则报错,OVERWRITES 覆盖已存在的文件。
默认为 NORMAL 方式写入。
FILECOUNT并行导出的文件个数,最小值为 0,最大值为 UINT_MAX(4294967295),默认值为 0,表示不限制文件导出个数。
仅对导出 HDFS 文件有效
在不指定 FILESIZE 参数时,实际导出 HDFS 文件个数为FILECOUNT 和数据主分片数二者的最小值。
当使用默认值时,每个主分片导出为一个 HDFS 文件。
FILESIZE导出文件大小的最大值,最小值为 0,最大值为
ULONGLONG_MAX(18446744073709551615),默认值为 0,
表示不限制导出文件的大小。如导出文件大小大于此参数值,则分裂产生新文件。新文件命名方式为file_title+suffix+file_ext 形式,其中 file_title 是 file_name 中’.’之前的部分,file_ext 为 file_name 中’.’之后的部分(包含’.’)suffix 为自动追加的文件名后缀,第一个文件名后缀是“_p1”,以此类推。FILESIZE 值支持 k/K/m/M/g/G 后缀表示方式。
WITH HEAD可选参数,用户输入该参数时,表示本地导出数据文件带有表头信息。用户忽略该参数时,表示本地导出数据文件不带表头信息。

导出指定行开头 LINES STARTING BY

如下指定,每一行的开头,增加----字符。 可以考虑额外的增加一些字段信息。

gbase> select * from test into outfile '/home/gbase/test.txt' fields terminated by '|'  double_enclosed by ',' escaped by '\\' writemode by overwrites LINES STARTING BY '----';
Query OK, 11 rows affected (Elapsed: 00:00:00.02)

gbase> system cat /home/gbase/test.txt
cat: /home/gbase/test.txt: Is a directory
gbase> system cat /home/gbase/test.txt/test.txt
----,43452,|,sisoekso,|,mozoa\,a,
----,59432,|\N|,laqpqpd,
----,3890,|,lqps\,rpd,|\N
----,1,|,测试,|,测试,
----,2,|,1|2,|,4\,|6,
----,4345,|,2|siso,|,ekso|mozoa,
----,434,|,52|s,|,isoek,
----,594,|,32|g,|,g|laq,
----,38,|,90|l,|,qps\,r,
----,111,|,ABCD,|,12345,
----,111,|,ABCD,|,12345,

FILESIZE 导出文件大小

参考 GBaes 8a导出文件时指定大小 fiesize