MySQL 5.6,如何将NULL导出为\ N?

时间:2016-09-26 23:44:41

标签: mysql mysql-5.6 mysql-5.5 into-outfile amazon-rds-aurora

我正在将MySQL 5.5物理主机数据库迁移到MySQL 5.6 AWS Aurora数据库。我注意到,当使用INTO OUTFILE将数据写入文件时,5.5将NULL值写为'\N',将空字符串写为''。但是,5.6将空字符串和NULL写为''

查询

SELECT * FROM $databasename.$tablename INTO OUTFILE $filename CHARACTER SET utf8 FIELDS ESCAPED BY '\\\\' TERMINATED BY $delimiter;

我找到了关于此的官方文件:

https://dev.mysql.com/doc/refman/5.6/en/load-data.html

  

采用固定行格式(在FIELDS TERMINATED BY和。时使用)   FIELDS ENCLOSED BY都是空的),NULL写为空   串。这会导致表中的NULL值和空字符串   写入文件时无法区分,因为两者都是写的   作为空字符串。如果你需要能够分别告诉两者   重新读取文件时,不应使用固定行格式。

如何将NULL导出为'\N'

1 个答案:

答案 0 :(得分:1)

  

如何将NULL导出为'\N'

首先,这很奇怪,为什么你想这样做?但是,如果由于某种原因您希望以这种方式导出,那么您必须将查询从select *更改为使用CASE表达式,例如

select 
case when col1 is null then '\\N' else col1 end as col1,
...
from $databasename.$tablename....

如您所说,您也可以将IFNULL()函数或COALESCE()函数用于同一目的。