私はMySQL 5.5物理ホストデータベースをMySQL 5.6 AWS Auroraデータベースに移行しています。私は、データがINTO OUTFILE
を使ってファイルに書き込まれたとき、5.5がNULL
の値を'\N'
と書いていて、空の文字列が''
と書いていることに気付きました。しかし、5.6は空文字列とNULLの両方を''
と書いています。終了FIELDSと 場によって囲まれている場合に使用される固定行フォーマット(付MySQL 5.6、どのように NとしてNULLをエクスポートするには?
https://dev.mysql.com/doc/refman/5.6/en/load-data.html
:
クエリ
SELECT * FROM $databasename.$tablename INTO OUTFILE $filename CHARACTER SET utf8 FIELDS ESCAPED BY '\\\\' TERMINATED BY $delimiter;
私はこれについて公式文書を発見しました両方とも空です)、NULLは空の文字列 として書き込まれます。これにより、空の文字列として が両方とも書き込まれるため、テーブルのNULL値と空の文字列が両方とも に書き込まれると区別できなくなります。 がファイルを読み込んだときに2つの区別をする必要がある場合は、固定行形式を使用しないでください。
NULL
を'\N'
にエクスポートするにはどうすればよいですか?
あなたは 'null '('' ''なし)の' \ N'を意味するのではないですか?これは5.5と5.6の両方のデフォルトの動作であり、ドキュメントの引用文の場合は5.5と5.6の両方で空になります。万が一異なる$区切り記号を使用しましたか?それが空であれば、引用符が示すように、 'null'と' '''の両方に対して "nothing"が生成されます。ファイルに ''\ N''を入れてしまったのか、それとも再インポートした後にデータベースに入れたのでしょうか?それを間違えてインポートした可能性があります。 – Solarflare