3

ピリオド「.」を使用する 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にするよりクリーンな方法はありますか?

4

1 に答える 1

0

csvの検索と置換ツールを使用して、を取り出します。そして、 ""(なし)に置き換えてください。ロードすると、重み列の下のその行に対して自動的にNULLになります。

于 2012-04-28T17:57:17.987 に答える