MySQL への CSV インポートの列をスキップする
LOAD DATA INFILE コマンドを使用して CSV ファイルを MySQL テーブルにインポートする場合、一般的に次のことが行われます。 CSV ファイル内の列の数がターゲット テーブル内の列と異なるシナリオが発生します。このような場合、特定の列をスキップする必要があります。
問題:
11 列を含む CSV ファイルと、9 列のみを含む MySQL テーブルがあるとします。 CSV ファイルの列 1 ~ 8 をテーブルの列 1 ~ 8 に直接マップしたいとしますが、次の 2 つの列をスキップして、CSV ファイルの列 11 をテーブルの列 9 にマップします。
解決策:
インポート プロセス中に列をスキップするには、テーブルの列に値を挿入せずにユーザー変数に値を割り当てる MySQL の機能を利用できます。これは、スキップされた列をユーザー変数に割り当て、その値を実質的に無視することによって実現されます。
目的のマッピングを実現する変更された SQL コマンドを次に示します。
LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '\n' (column1, @dummy1, column2, @dummy2, column3, column4, column5, column6, column7, column8, @dummy3, column9);
この変更されたコマンドでは、2 人のユーザー変数 (@dummy1 および @dummy2) は、それぞれ CSV ファイルの 9 列目と 10 列目の値を取得するために使用されますが、これらの値はテーブルのどの列にも割り当てられません。その結果、それらは事実上スキップされ、CSV ファイルの列 11 がテーブルの列 9 に正しくマッピングされるようになります。
以上がMySQL への CSV インポート中に列をスキップするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。