2016年7月1日金曜日

phpMyAdminでCSVインポート時、空をNULLでinsertする

phpMyAdminでCSVインポートを良く使うのですが、たとえばintのフィールドに空("")をいれようとすると


MySQL のメッセージ: ドキュメント
 #1366 - Incorrect integer value: '' for column 'sample_number' at row 1


なんてエラーが出てインポートできません。
NULLといれておけばNULLで入るので解決するのですが
普通CSVといえばExcelなどでデータを作ってCSVファイルにしてインポートするわけで
空なんてざらにあるわけでして・・・
いちいちセルにNULLとかいれるのは本当に面倒です。


と思っていたら、空だったら自動でNULLをinsertする方法がありました。


CSVインポートの際に、「フォーマット特有のオプション:」にて
「INSERT エラーで中断しない」
にチェックをつけると、空値が入っていてもNULLでインポートしてくれます。


ただCSVファイルの行数はインポート前に把握しておいた方が良いですね。

※7/3追記
このオプションは例えば入れるべき値が1列ずれてたなどそういう致命的なミスがあった場合でも適宜0やNULLなどインポートできる値に置き換えていれてしまうので、ミスに気づきにくいです。
結局使わなかった・・・