【发布时间】:2017-02-04 10:55:47
【问题描述】:
我正在将 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'?
【问题讨论】:
-
你确定你不是指
\Nfornull(没有'')吗?这将是 5.5 和 5.6 的默认行为,对于文档中引用的情况,5.5 和 5.6 也将为空。您是否有任何机会使用不同的$delimiter?如果它是空的,它会为null和''产生“nothing”,就像引用所说的那样。您是否在文件中获得了'\N',或者在您重新导入它(并且可能再次重新导出它)后在您的数据库中获得了'\N'- 那么您可能导入不正确。
标签: mysql mysql-5.6 mysql-5.5 into-outfile amazon-aurora