ピリオド「.」を使用する CSV ファイルを使用しています。null 値を表す記号。例えば、
item weight unit_price
1 5.1 10
2 . 20
3 7.5 30
4 . 40
5 2.0 50
これは、次を使用して MySQL (v. 5.5) のテーブルに読み込まれます。
CREATE TABLE products(
item SMALLINT NOT NULL,
weight float DEFAULT NULL,
unit_price SMALLINT);
LOAD DATA INFILE ".../data.txt"
IGNORE
INTO TABLE products
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\r\n"
IGNORE 1 LINES;
LOAD DATA ブロックの IGNORE キーワードは、「.」を強制します。0 に - 代わりに NULL に設定する方法はありますか?
私が試した唯一の修正はこれです:
LOAD DATA INFILE ".../data.txt"
IGNORE
INTO TABLE products
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\r\n"
IGNORE 1 LINES
(item,
@weight,
unit_price
)
SET
weight = if(@weight = '.', NULL, @weight);
ただし、私が扱っている実際のデータには、1,000 万行を超える行と 15 列が含まれています。null を表すために使用されます。デフォルトをnullにするよりクリーンな方法はありますか?