更新日期:2024年09月11日
在一些特殊的情况下,转义符将不起作用,换句话说,就是对导出的数据不进行转
义。
字符型数据不转义的特殊情况:
如果设定字段包围符(FIELDS ENCLOSED BY)为空,导出的字段中的字符与字
GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 235
段分隔符首字符(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 B
Y '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 '"';
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
查看导出文件:
GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 236
$ 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 TERM
INATED 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
查看导出文件:
$ cat unescaped_5.txt
1022ab2xmny