ホームページ >データベース >mysql チュートリアル >LOAD DATA INFILE を使用して空のフィールドを含む CSV データを MySQL にインポートするときに、ゼロではなく NULL 値を処理するにはどうすればよいですか?

LOAD DATA INFILE を使用して空のフィールドを含む CSV データを MySQL にインポートするときに、ゼロではなく NULL 値を処理するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-04 14:02:39153ブラウズ

How Can I Handle NULL Values Instead of Zeros When Importing CSV Data with Empty Fields into MySQL Using LOAD DATA INFILE?

空のフィールドを含む CSV からの MySQL LOAD での NULL 値の処理

MySQL の LOAD コマンドは、CSV ファイルからテーブルにデータをインポートする簡単な方法を提供します。ただし、空のフィールドを含む CSV ファイルから数値データをロードする場合、カラムが NULL 可能として定義されている場合でも、MySQL は NULL の代わりにゼロを挿入する傾向があります。

次の CSV ファイル (testdata.txt) について考えてみましょう。

1,2,3,4,5
1,2,3,,5
1,2,3

そして次の MySQL テーブル (moo):

CREATE TABLE moo (
  one INT(1) NULL,
  two INT(1) NULL,
  three INT(1) NULL,
  four INT(1) NULL,
  five INT(1) NULL
);

LOAD コマンドを使用して CSV データを moo テーブルに追加します:

LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS TERMINATED BY "," LINES TERMINATED BY "\n";

結果のテーブルには次のものが含まれます:

+------+------+-------+------+------+
| one  | two  | three | four | five |
+------+------+-------+------+------+
| 1    | 2    | 3     | 4    | 5    |
| 1    | 2    | 3     | 0    | 5    |
| 1    | 2    | 3     | NULL | NULL |
+------+------+-------+------+------+

ご覧のとおり、MySQL は空のフィールドに 0 を割り当てますが、これは正しくありません。列で NULL 値が許可される場合。

この問題に対処し、空のフィールドが NULL として正しく処理されるようにするには、NULLIF() 関数を使用します。 NULLIF() は 2 つの引数を取ります。チェックされるフィールドと、フィールドが空の場合に返す値です。使用方法は次のとおりです:

LOAD DATA INFILE '/tmp/testdata.txt'
INTO TABLE moo
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\n"
(one, two, three, @vfour, five)
SET four = NULLIF(@vfour,'')
;

この例では、4 番目のフィールドがローカル変数 @vfour に読み込まれます。 @vfour が空の文字列の場合、SET ステートメントは 4 を NULL に割り当てます。

複数のフィールドが空である可能性がある場合は、それらをすべてローカル変数に読み取り、複数の SET ステートメントを利用します:

LOAD DATA INFILE '/tmp/testdata.txt'
INTO TABLE moo
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\n"
(@vone, @vtwo, @vthree, @vfour, @vfive)
SET
one = NULLIF(@vone,''),
two = NULLIF(@vtwo,''),
three = NULLIF(@vthree,''),
four = NULLIF(@vfour,'')
;

NULLIF() を活用することで、MySQL LOAD は空のフィールドを正しく処理し、NULL 値を割り当てることができるようになり、MySQL テーブル内のデータを正確に操作できるようになります。

以上がLOAD DATA INFILE を使用して空のフィールドを含む CSV データを MySQL にインポートするときに、ゼロではなく NULL 値を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。