我正在将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'

最佳答案

如何将NULL导出为'\N'


首先,这很奇怪,为什么要这么做呢?但是,如果由于某种原因要以这种方式导出它,则必须将查询从select *更改为使用CASE表达式,例如

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


如前所述,您也可以出于相同目的使用IFNULL()函数或COALESCE()函数。

关于mysql - MySQL 5.6,如何将NULL导出为\N?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39713988/

10-12 00:37
查看更多