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