我正在將MySQL 5.5物理主機數據庫遷移到MySQL 5.6 AWS Aurora數據庫。我注意到,當使用INTO OUTFILE
將數據寫入文件時,5.5將NULL
值寫爲'\N'
,並將空字符串寫爲''
。但是,5.6將空字符串和NULL寫入''
。MySQL 5.6,如何導出NULL爲 N?
查詢
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
用固定行格式(如裝由TERMINATED FIELDS和 FIELDS所使用都是空的),NULL被寫爲空的 字符串。這會導致 表中的NULL值和空字符串在寫入文件時無法區分,因爲它們都被寫爲 作爲空字符串。如果您需要在 重新讀入文件時能夠分辨兩者,則不應使用固定行格式。
如何導出NULL
爲'\N'
?
你確定你不是指'null'(沒有'''')嗎?這將是5.5和5.6的默認行爲,對於引用文檔中的情況,5.5和5.6也是空的。你有沒有機會使用不同的'$ delimiter'?如果它是空的,它將產生「null」和「'」,正如引用所述。在你重新導入它之後(或者再次導出它),你是否在文件或數據庫中獲得了'\ N'' - 那麼你可能導入了錯誤。 – Solarflare