GBase 8a数据导出功能介绍

1导出语法及参数说明

语法格式:

SELECT … into OUTFILE ‘file_name’ [OPTIONS] FROM …;

SELECT… FROM… into OUTFILE ‘file_name’ [OPTIONS];

 

options:

[FIELDS/COLUMNS

[TERMINATED BY ‘string’]

[[OPTIONALLY] enclosed by ‘string’]

[ESCAPED BY ‘string’]

[[OPTIONALLY] DOUBLE_ENCLOSED BY ‘string’]

[LENGTH  ‘string’]

[BLOBMODE ‘string’ ‘string’]

]

[LINES

[TERMINATED BY ‘string’]

[STARTING BY    ‘string’]

]

[CHARACTER SET charset_name]

[NULL_VALUE   ‘string’]

[OUTFILEMODE BY’string’]

[WRITEMODE BY ‘string’]

[FILECOUNT  ‘string’]

[FILESIZE  ‘string’]

[WITH HEAD ]

 

参数说明如下:

file_name保存导出数据的路径及文件名。支持压缩文件导出,支持的压缩方式有GZ、SNAPPY、LZO。该参数仅支持本地/HDFS/sftp/ftp四种服务器导出的书写格式。

 

OPTIONS

FIELDS/COLUMNS:

TERMINATED BY:字段分隔符,支持多个字符,如果不指定分隔符则默认值“\t”,即TAB键。

[OPTIONALLY] ENCLOSED BY:字段包围符,可以自行指定单个字符为字段包围符,指定多个字符时报错。支持OPTIONALLY选项,加OPTIONALLY选项时仅对字符串类型起作用,否则对所有字段都起作用。默认为无字段包围符。

ESCAPED by转义标识符,可以自行指定单个字符为转义标识符,指定多个字符时报错,默认为“\”,默认值在语句中写为:FIELDS ESCAPED by ‘\\’。

[OPTIONALLY] DOUBLE_ENCLOSED BY字段包含符自转义,该参数包含上面参数(字段包围符)的所有功能;但额外的作用是,当转义符设置为空时,如果某字段满足使用字段包围符的条件,且该字段中还有与字段包围符相同的字符,则将该字符通过双写的方式自转义。

LENGTH在使用定长模式导出时,用于设定字段长度的参数。定长格式数据导出时,设置每个字段的长度,多个字段之间用逗号分隔,该参数不能和列分隔符以和包围符混用。

BLOBMODE:用来控制blob/longblob类型导出的数据格式,格式为“blobmode ‘列名 数据格式,列名 数据格式,…’”,其中数据格式取值为type_txt/type_base64/type_url,默认为type_txt。说明如下:

type_txt:普通文本格式,blob数据与普通字符串处理方式相同;type_base64:base64编码方式,blob数据按base64编码;type_url:独立文件方式,blob导出到独立文件。该参数默认值为type_txt。

 

LINES:

TERMINATED BY行分隔符,支持多个字符,默认为“\n”。

STARTING BY  行起始符,支持多个字符,默认为“”。

 

CHARACTER SET指定导出文件的字符集,支持GBK和UTF8编码,不写默认导出和源表字符集保持一致。

 

NULL_VALUE   空值标识符,支持多个字符,默认为’\N’。

 

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,表示不限制导出文件的大小。如导出文件大小大于此参数值,则分裂产生新文件。FILESIZE值支持k/K/m/M/g/G后缀表示方式。

 

WITH HEAD表示本地导出数据文件是否带有表头信息。WITH HEAD为可选参数,用户输入该参数时,表示本地导出数据文件带有表头信息。用户忽略该参数时,表示本地导出数据文件不带表头信息,与现有导出工具的行为保持一致。

WITH HEAD语法约束:对于表头导出功能,当用户指定转义字符时,表头信息不作转义处理;导出表头信息为小写,不支持大写;表头的导出只支持express引擎表,其他类型不作保证。

 

2远程导出语法及参数说明

[rmt:]SELECT … into OUTFILE ‘file_name’ [OPTION] FROM …;

[rmt:]SELECT… FROM… into OUTFILE ‘file_name’ [OPTION];

 

options:

[FIELDS/COLUMNS

[TERMINATED BY’string’]

[[OPTIONALLY] ENCLOSED BY ‘string’]

[ESCAPED BY ‘string’]

[[OPTIONALLY] DOUBLE_ENCLOSED BY ‘string’]

[LENGTH  ‘string’]

[BLOBMODE ‘string’ ‘string’]

]

[LINES

[TERMINATED BY’string’]

[STARTING BY    ‘string’]

]

[CHARACTER SET charset_name]

[NULL_VALUE   ‘string’]

[WRITEMODE BY ‘string’]

[FILESIZE  ‘string’]

[WITH HEAD ]

 

说明:与本地/hdfs导出语法相比,远程导出不支持参数FILECOUNT与OUTFILEMODE by,其他参数说明可参考章节2.1。

3支持自动创建导出目录

本地/hdfs导出文件时是否创建目录由参数gbase_export_directory控制,该参数为session/global级参数,使用set方式可设置;参数取值0或1,0:不创建目录,1:创建目录,以导出文件名作为目录名;默认值为1。

远程导出文件时是否创建目录由参数remote_export_create_directory控制,该参数只能在配置文件中设置;参数取值0或1,0:不创建目录,1:创建目录,以导出文件名作为目录名;默认值为0。

4定长导出字符截断功能

定长导出,若导出字符数据的实际长度大于导出设置的长度时,可以通过参数设置,是允许截断导出还是直接报错;由参数gbase_export_truncate_mode进行控制,参数值为0/1/2,为0时截断导出不报错,为1时截断导出报警告,为2时导出报错;默认值为0。

5导出示例

(1) 本地导出文件

select * from test into outfile ‘/home/gbase/temp/test.txt’ fields terminated by ‘|’;

(2) 本地导出文件(指定FILESIZE)

select * from test into outfile ‘/home/gbase/temp/test.txt’ filesize 33554432;

(3)导出文件

select * from test into outfile ‘hdp://192.168.154.2:50070/outfile//test.dat?user=hadoop’ outfilemode by hdfs  fields terminated by ‘|’;

(4)导出文件(指定FILECOUNT )

select * from test into outfile ‘hdp://192.168.154.2:50070/outfile//test.dat?user=hadoop’ outfilemode by hdfs  fields terminated by ‘|’ filecount 1;

(5)导出文件(指定FILESIZE)

select * from test into outfile ‘hdp://192.168.154.2:50070/outfile//test.dat?user=hadoop’ outfilemode by hdfs  fields terminated by ‘|’ filesize 10240;

(6)hdfs导出文件(指定FILECOUNT 及FILESIZE)

select * from test into outfile ‘hdp://192.168.154.2:50070/outfile//test.dat?user=hadoop’ outfilemode by hdfs  fields terminated by ‘|’ filecount 1 filesize 10240;

(7)远程导出文件

rmt:select* from test into outfile ‘/home/gbase/temp/test.txt’ fields terminated by ‘|’;

(8)导出文件

select * from test into outfile sftp://gbase:gbase@192.168.154.2:50070/outfile//test.dat’  fields terminated by ‘|’;

(9)导出文件

select * from test into outfile ftp://gbase:gbase@192.168.154.2:50070/outfile//test.dat’ fields terminated by ‘|’ ;

(10)压缩文件导出(本地/hdfs/sftp/ftp)

select * from test into outfile ‘/home/gbase/temp/test.snappy’ fields terminated by ‘|’;

select * from test into outfile ‘hdp://192.168.154.2:50070/outfile//test.lzo?user=hadoop’ outfilemode by hdfs  fields terminated by ‘|’;

select * from test into outfile sftp://gbase:gbase@192.168.154.2:50070/outfile//test.gz’  fields terminated by ‘|’;

select * from test into outfile ftp://gbase:gbase@192.168.154.2:50070/outfile//test.gz’ fields terminated by ‘|’ ;

(11)导出含表头数据

select * from test into outfile ‘/home/gbase/temp/test.tbl’ fields terminated by ‘|’ with head;

(12) longblob类型导出

select * from test into outfile ‘/home/gbase/testdat’fields blobmod ‘c1 type_text,c2 type_url’

原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/317941.html

(0)
上一篇 2天前
下一篇 2天前

相关推荐

发表回复

登录后才能评论