MySQL的enclosed-by和escaped-by

        在mysql使用过程中,我往往使用“load data infile”和“select into outfile”这两种功能来快速“搬运”数据。细心的童鞋会发现这两种SQL语句都有:

line terminated by 'string'

fields terminated by 'string'

enclosed by 'char'

escaped by 'char'

 

一,在“load data infile”中:

先看看enclosed-by的作用:

 1,在字段值中存在"enclosed by"字符,并且其前一个字符为"escaped by"字符,则导入mysql后,"escaped by"字符会被去除。

 2,对于文本中被"enclosed by"包裹的字段值,如果值内出现连续两个的"enclosed by"字符,则导入后,会变成一个。

 

再看看escaped-by作用:

1,字段值内出现"escaped by"字符,该字符将被去除,同时保留其后一个字符;

2,但是对以下特殊的两个“挨着”字符会进行"反转义"处理

"\\0" -- 反转义成\0(0x00)

"\\b", "\\n", "\\r", "\\t" -- 反转义成\b, \n, \r, \t

"\\Z" -- 反转义成ascii码26

"\\N" -- 反转义成NULL

二,在“select into outfile”中:

还是先看看enclosed-by的作用:

1,enclosed-by字句的optionally是有作用的

有optionally,则只对字符串类型的字段使用encloed-by字符“包裹”;

无optionally,则对全部字段使用enclosed-by字符“包裹”。

最后看看escaped-by的作用:

1,对以下4中情况的字符进行转义

字段值中有"escaped by"字符

字段值中有"enclosed by"字符

字段值中有"fields terminated by"和"lines terminated by"字符串的首个字符

ascii码0 -> 转义之后变成两个字节

第一个字节 - '\\'

第二个字节 - '0'(字符0,而不是ascii 0)

猜你喜欢

转载自guwq2014.iteye.com/blog/2355517
今日推荐