ホームページ >データベース >mysql チュートリアル >LOAD DATA INFILE を使用して CSV ファイルを MySQL にインポートするときに列をスキップするにはどうすればよいですか?

LOAD DATA INFILE を使用して CSV ファイルを MySQL にインポートするときに列をスキップするにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-17 18:21:02196ブラウズ

How can I Skip Columns When Importing a CSV file into MySQL using LOAD DATA INFILE?

MySQL の LOAD DATA INFILE を使用した CSV インポートでの列のスキップ

CSV ファイルから MySQL テーブルにデータをインポートする場合、必ずしもすべての列をマップする必要はありません。無関係な列をスキップしたり、データの不一致が存在する列のマッピングを避けたりすることが望ましい場合があります。

問題:

11 列がある CSV ファイルについて考えてみましょう:

col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11

MySQL テーブルには 9 つしかありませんcolumns:

col1, col2, col3, col4, col5, col6, col7, col8, col9

目標は、CSV の列 1 ~ 8 を MySQL テーブルの最初の 8 列にインポートすることですが、列 9 と 10 をスキップして、CSV の列 11 を列 9 にマップすることです。

解決策:

内の列をスキップするにはCSV のインポート中に、LOAD DATA INFILE コマンドで @dummy 変数を使用します。

LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table (
    col1,
    @dummy1,
    col2,
    @dummy2,
    col3,
    col4,
    col5,
    col6,
    col7,
    col8,
    @dummy3,
    @dummy4,
    col9
)
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\n'

このコマンド内:

  • @dummy1、@dummy2、@dummy3、および @ dummy4 は、スキップされた列の値を保持するユーザー変数です。
  • 列 9 および 10 CSV ファイルの は、それぞれ @dummy3 と @dummy4 に割り当てられるため、事実上破棄されます。

このソリューションでは、CSV 列をテーブル列に選択的にマッピングできます。数が異なります。

以上がLOAD DATA INFILE を使用して CSV ファイルを MySQL にインポートするときに列をスキップするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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