0

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

4

1 回答 1

1

我如何导出NULL'\N'

首先这很奇怪,你为什么要这样做?但是,如果由于某种原因您想以这种方式导出它,那么您将不得不将查询从更改select *为使用CASE类似的表达式

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

正如所评论的,您也可以将IFNULL() 功能或COALESCE()功能用于相同目的。

于 2016-09-27T00:11:43.697 回答