两种不转义的特殊情况
在一些特殊的情况下,转义符将不起作用,换句话说,就是对导出的数据不进行
转义。
字符型数据不转义的特殊情况
如果设定字段包围符
(FIELDS ENCLOSED BY)
为空,
导出的字段中的字符与字
段分隔符首字符(FIELDS TERMINATED BY)相同,并且字段分隔符(FIELDS
TERMINATED BY)首字符是“n、t、r、b、0、Z、N”之一。这种情况下是不对
导出的字符进行转义的。
示例中用到的表及数据:
DROP TABLE IF EXISTS t;
CREATE TABLE
t(n int, v1 varchar(5), v2 varchar(8));
INSERT INTO t VALUES(102, 'ab', 'xmny');
示例:
SELECT * FROM t INTO OUTFILE '/home/gbase/temp/unescaped_1.txt'
FIELDS TERMINATED BY 'n' ENCLOSED BY '';
查看导出文件:
$ cat unescaped_1.txt
102nabnxmny
可见字符串中“xmny”中的字符“n”没有转义。
非字符型数据不转义的特殊情况
如果opt_enclosed 判定为真(判断条件请见说明部分),当导出数据中某字符与
FIELDS TERMINATED BY 设置的字段分隔符首字符相同,并且字段分隔符首字
符是“.、0、1、2、3、4、5、6、7、8、9、e、+、-”之一时,这种情况下是不
对导出的字符进行转义的。
说明:
满足如下判断条件之一时,opt_enclosed 为真:
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"';
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1228
ENCLOSED BY '';
OPTIONALLY ENCLOSED BY '';
不写ENCLOSED BY 子句。
示例中用到的表及数据:
DROP TABLE IF EXISTS t;
CREATE TABLE
t(n int, v1 varchar(5), v2 varchar(8));
INSERT INTO t VALUES(102, 'ab', 'xmny');
示例1:
使用
“FIELDS TERMINATED BY '2' OPTIONALLY ENCLOSED BY '"'”
,
非字符型数据“102”中的“2”没有转义。
gbase>
SELECT
*
FROM
t
INTO
OUTFILE
'/home/gbase/temp/unescaped_2.txt'
FIELDS
TERMINATED
BY
'2'
OPTIONALLY ENCLOSED BY '"';
Query OK, 1 row affected
查看导出文件:
$ cat unescaped_2.txt
1022"ab"2"xmny"
示例2:使用“FIELDS TERMINATED BY '2' ENCLOSED BY ''”,非字符型数据
“102”中的“2”没有转义。
gbase>
SELECT
*
FROM
t
INTO
OUTFILE
'/home/gbase/temp/unescaped_3.txt'
FIELDS
TERMINATED
BY
'2'
ENCLOSED BY '';
Query OK, 1 row affected
查看导出文件:
$ cat unescaped_3.txt
1022ab2xmny
示例3:“FIELDS TERMINATED BY '2' OPTIONALLY ENCLOSED BY ''”,非
字符型数据“102”中的“2”没有转义。
gbase>
SELECT
*
FROM
t
INTO
OUTFILE
'/home/gbase/temp/unescaped_4.txt'
FIELDS
TERMINATED
BY
'2'
OPTIONALLY ENCLOSED BY '';
Query OK, 1 row affected
查看导出文件:
$ cat unescaped_4.txt
1022ab2xmny
示例4:使用“FIELDS TERMINATED BY '2'”,非字符型数据“102”中的“2”
没有转义。
gbase>
SELECT
*
FROM
t
INTO
OUTFILE
'/home/gbase/temp/unescaped_5.txt' FIELDS TERMINATED BY '2';
Query OK, 1 row affected
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1229
查看导出文件:
$ cat unescaped_5.txt
1022ab2xmny