语法格式
SELECT ... INTO OUTFILE 'storage_target ' [OPTION] FROM ...;
SELECT... FROM... INTO OUTFILE 'storage_target ' [OPTION];
参数说明
导出存储目标分8a 表与hive 表两种情况
a、8a 表:
storage_target:保存导出数据的路径及文件名,必须是绝对路径。如,
/home/gbase/test.txt。如果导出时,目标文件已经存在,则系统报告错误信息。
b、hive 表
storage_target:保存导出数据的目录,可以是绝对路径,如'/tmp/h1',或相对路
径,如’tmp/h1’。如果指定相对路径,则有两种情况:
保存导出数据的文件系统,支持HDFS 及本地文件系统LOCAL,默认值是
LOCAL。如果指定导出到本地文件系统,且目标目录已经存在,则会报错
“ERROR 1086 (HY000): File '/your/outfile/path' already exists”。如果指定导出
GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 230
到HDFS,且目标目录已经存在,具体规则如下:
1) hive_export_use_ext_table = 0 (默认)时支持writemode
normal/overwrites/appends。
normal 要求导出目录为空,否则报错。
overwrites 会删除导出目录,再重新创建目录并导出文件。
appends 会追加写数据到导出目录。
如果目录目录不存在,三个参数都是创建新的目录,然后再导出数据。
2) hive_export_use_ext_table = 1 时只支持writemode overwrites ,指定
normal/appends 时报错。
因为hive_export_use_ext_table = 1 时,
UP 使用hive
的insert overwrite dirctory 语法导出数据 覆盖写到目标目录,只能支持覆
盖写。
OPTION 参数说明
OPTION 选项
说 明
FIELDS/COLUMNS
TERMINATED BY
字段分隔符,支持多个字符,如果不指定分隔符则默认值
“\t”,即TAB 键。
FIELDS/COLUMNS
[OPTIONALLY] ENCLOSED BY
字段包围符,可以自行指定单个字符为字段包围符,指定多
个字符时报错。
支持OPTIONALLY 选项,加OPTIONALLY 选项时仅对字
符串类型起作用,否则对所有字段都起作用。
默认为无字段包围符。
FIELDS/COLUMNS
ESCAPED
BY
转义标识符,可以自行指定单个字符为转义标识符,指定多
个字符时报错,
默认为
“\”
,
默认值在语句中写为:
FIELDS
ESCAPED BY '\\'。
LINES TERMINATED BY
行分隔符,支持多个字符,默认为“\n”。
LINES STARTING BY
行起始符,支持多个字符,默认为“”。
OPTION 语法约束:
可指定多个字符为字段分隔符,默认为“\t”。
可指定单个字符为字段包围符,指定多个包围符时报错。支持OPTIONALLY
选项,加OPTIONALLY 选项时仅对字符串类型起作用,否则对所有字段都起
作用。默认为无字段包围符。
可指定单个字符为转义标识符,指定多个转义符时报错。
可指定多个字符为换行符,默认为“\n”。
可指定多个字符为行首分隔符,默认为“”。
如果需要同时设置多个FIELDS/COLUMNS 和LINES 的参数,则需要注意的
是, FIELDS/COLUMNS 参数与LINES 参数不能相互交叉混合设置。
GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 231
在一条完整的SELECT ... INTO OUTFILE 语句中,FIELDS/COLUMNS 或
LINES 保留字仅可出现一次。
SELECT...INTO OUTFILE...支持导出复杂SQL 语句的查询结果。
注意
HIVE 引擎的导出的文本文件中,以’\n’作为行分隔符。
HIVE 引擎执行SELECT INTO OUTFILE 时,不支持SORT BY、CLUSTER BY、
DISTRIBUTE BY 子句。
如果是HIVE 表,不支持 ENCLOSED BY、STARTING BY。
HIVE 引擎只支持单个字符的转义符和分割符。