GBase 8a
其他
文章

SELECT ... INTO OUTFILE语句导出数据时,如何指定字段分隔符、行终止符以及文件格式(如CSV)?

发表于2026-03-24 15:20:2938次浏览5个评论

在 GBase 8a 中使用 SELECT ... INTO OUTFILE 语句导出数据时,通过 OPTION 子句中的一系列参数来指定字段分隔符、行终止符及文件格式。GBase 8a 没有直接的 CSV 格式关键字,但可以通过组合参数完美模拟标准 CSV 格式。

一、核心语法与参数

导出语句的完整语法结构如下:

SELECT ... FROM ... INTO OUTFILE 'file_name'
    [FIELDS TERMINATED BY 'string']
    [ENCLOSED BY 'char']
    [ESCAPED BY 'char']
    [LINES TERMINATED BY 'string']
    [CHARACTER SET charset_name]
    [WRITEMODE BY ...]
    ... ;

二、如何指定关键格式参数

1. 指定字段分隔符

使用 FIELDS TERMINATED BY 子句。

  • 默认值:如果不指定,默认使用 '\t'(制表符,Tab键)。

     

    -- 使用竖线分隔
    SELECT * FROM t1 INTO OUTFILE '/data/out1.txt' FIELDS TERMINATED BY '|';
    -- 使用逗号分隔(模拟CSV)
    SELECT * FROM t1 INTO OUTFILE '/data/out2.txt' FIELDS TERMINATED BY ',';
    -- 使用不可见字符(如\x01)
    SELECT * FROM t1 INTO OUTFILE '/data/out3.txt' FIELDS TERMINATED BY '\x01';

2. 指定行终止符

使用 LINES TERMINATED BY 子句。

  • 默认值:如果不指定,默认使用 '\n'(换行符)。

     

    -- 使用Windows风格的换行符
    SELECT * FROM t1 INTO OUTFILE '/data/out4.txt' LINES TERMINATED BY '\r\n';

3. 指定文件格式(模拟CSV及其他格式)

通过组合 FIELDSLINES 的相关参数来定义格式。

  • 标准CSV格式:字段用逗号分隔,字符串用双引号包围,换行符结束。

     

    SELECT * FROM t1 INTO OUTFILE '/data/out.csv'
        FIELDS TERMINATED BY ','
        OPTIONALLY ENCLOSED BY '"'
        ESCAPED BY '"'
        LINES TERMINATED BY '\n';
    
    • OPTIONALLY ENCLOSED BY '"':表示仅字符串类型的字段会被双引号包围,数字等类型不加。若去掉 OPTIONALLY,则所有字段都加引号。

       

    • ESCAPED BY '"':指定双引号为转义符。当字段内包含双引号时,会转义为两个双引号(""),这是标准CSV的规范。
  • TSV(制表符分隔)格式

     

    SELECT * FROM t1 INTO OUTFILE '/data/out.tsv'
        FIELDS TERMINATED BY '\t'
        LINES TERMINATED BY '\n';
  • 自定义文本格式

     

    -- 示例:字段用“|#|”分隔,字符串用单引号包围,行以“;\n”结束
    SELECT * FROM t1 INTO OUTFILE '/data/out_custom.txt'
        FIELDS TERMINATED BY '|#|'
        ENCLOSED BY '\''
        LINES TERMINATED BY ';\n';

三、其他重要格式控制参数

参数作用示例
ENCLOSED BY

字段包围符。

 

ENCLOSED BY '\'' (用单引号包围)
OPTIONALLYENCLOSED BY 连用,仅对字符串类型字段生效OPTIONALLY ENCLOSED BY '"'
ESCAPED BY指定转义符,默认是反斜杠 \

ESCAPED BY '\\' (默认值写法)

 

CHARACTER SET

指定导出文件字符集,如 UTF8GBK

 

CHARACTER SET UTF8
NULL_VALUE指定 NULL 值的输出表示,默认是 \NNULL_VALUE 'NULL'
  1. 参数详解部分:明确说明了 TERMINATED BYENCLOSED BYLINES TERMINATED BY 的默认值和用法。

     

五、完整示例与注意事项

一个完整的、模拟标准CSV的导出示例:

SELECT id, name, salary FROM employees INTO OUTFILE '/home/gbase/employees.csv'
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    ESCAPED BY '"'
    LINES TERMINATED BY '\n'
    CHARACTER SET UTF8
    NULL_VALUE ''
    WRITEMODE BY OVERWRITES;

关键注意事项:

  1. 文件路径:必须使用绝对路径
  2. 远程导出:若需将文件生成在客户端机器,需在语句前加 rmt: 前缀(无空格)。

     

  3. 压缩导出:通过文件后缀自动识别,如 .gz.snappy.lzo

     

  4. 默认行为:如果目标文件已存在,默认会报错。可添加 WRITEMODE BY OVERWRITES 进行覆盖。

     

通过灵活组合这些参数,您可以精确控制GBase 8a导出数据的格式,以满足下游系统(如HDFS、Spark、ETL工具)或交换文件(如CSV)的严格要求。

评论

登录后才可以发表评论
GBase用户47954发表于 4个月前
感谢作者的精彩分享!
ljt98发表于 2个月前
向大佬学习
用户头像
柒柒天晴发表于 2个月前
谢谢分享
菲菲发表于 2个月前
厉害了
曾浩轩发表于 2个月前
厉害了