NULL と陽に書いていない空なカラムを NULL として取り込ませる @ mysql
会社の人に mysql で csvを読み込むとき,NULL と陽に書いていない空なカラムを NULL として取り込ませる方法を教えて貰った.メモ.
drop table if exists foo; create table foo ( a INTEGER default null, b INTEGER default null ); LOAD DATA LOCAL INFILE 'dat.csv' -- <dat.csv> -- 1,2 -- 3, -- ,4 -- , -- </dat.csv> INTO TABLE foo FIELDS TERMINATED BY ',' (a, @b_raw) set b = case @b_raw when '' then NULL else @b_raw end; select * from foo;
カラム b は一度生データを b_raw という変数で受けて,これが空文字列なら b に NULL をセットするようにしている.a は何も処理していない.
結果:
+------+------+ | a | b | +------+------+ | 1 | 2 | | 3 | NULL | | 0 | 4 | | 0 | NULL | +------+------+
🎉