DB

MySQLのLOAD DATAで空白の代わりにnullをセットしたい

MySQLのLOAD DATAで空白の代わりにnullをセットしたい

MySQLのLOAD DATAで空白の代わりにnullをセットしたい。
CSVを高速にインポートするLOAD DATA INFILEコマンド。
そのロード時にブランク(空白)が入るのを避ける方法を紹介する。



LOAD DATAコマンドとは

LOAD DATA INFILE コマンドはCSVファイルなどのテキストファイルの内容を、高速にMySQLのテーブルに取り込むコマンドである。

LOAD DATA INFILE ステートメントは、非常に高速にテキストファイルからテーブルに行を読み取ります。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.6 LOAD DATA INFILE 構文


通常はブランク(空白)がセットされる

ロードする際、CSVの中に何も無い空白のセルがあると、nullではなくブランク(空白)として取り込まれる。
以前記事に書いたように空白とnullは判定条件がややこしいので混在させない方が良い。

MySQLで空文字(空白、ブランク)カラムを置換する


ブランク(空白)の代わりにnullをセットする方法

ブランク(空白)の代わりにnullをセットするには nullif を使う。
SQL文で利用できる関数はLOAD DATA INFILEコマンドでも有効なので、 nullif で空白をnullに置換してしまえば空白の代わりにnullを挿入できる。

LOAD DATA INFILE "ファイルパス"
INTO TABLE テーブル名
FIELDS
  TERMINATED BY ','
LINES
  TERMINATED BY '\r\n'
IGNORE
(@csv_col1, @csv_col2, @csv_col3)
SET
  table_col1 = nullif(@csv_col1,""),
  table_col2 = nullif(@csv_col2,""),
  table_col3 = nullif(@csv_col3,"")
;

参考:
MySQLのload dataで日付型にnullをセットする - 文系プログラマによるTIPSブログ


まとめ

  • MySQLのLOAD DATAで空白の代わりにnullをセットするには nullif を使う


ITipsと同じようなブログを作る方法

ブログに興味がありますか?

もしブログに興味がある場合は↓このページ↓を参考にすれば、ITipsと同じ構成でブログを作ることができます

サーバー、ドメイン、ASPと【ブログに必要なものは全て】このページに書きました。
同じ構成でブログ作るのはいいけど、記事はマネしないでネ (TДT;)

ランキング参加中

にほんブログ村 IT技術ブログへ

他にもブログやSNSで紹介してくれると励みになります。

はてブのコメントで酷評されると泣きます(´;ω;`)

-DB
-

© 2024 ITips