検索

ホームページ  >  に質問  >  本文

CSV ファイルを MySQL テーブルにインポートするにはどうすればよいですか?

クライアントからの正規化されていないイベント ログ CSV を MySQL テーブルにロードして、通常の形式に再構築できるようにしようとしています。 CSV ファイルの各列のフィールドを持つ「CSVImport」というテーブルを作成しました。 CSV には 99 列が含まれているため、これ自体が大変な作業です:

リーリー

テーブルには制約はなく、すべてのフィールドは、カウント (INT で表される)、yes/no (BIT で表される)、価格 (DECIMAL で表される)、およびテキスト説明 (テキストによる)。

データをファイルにロードしてみました:

リーリー

テーブル全体が NULL で埋められます。

問題は、テキストの導入部分に複数の行が含まれており、MySQL が各新しい行がデータベースの行に対応しているかのようにファイルを解析していることだと思います。ファイルを問題なく Open にロードできます。

clientdata.csv ファイルには 2593 行と 570 レコードが含まれています。最初の行には列名が含まれます。カンマ区切りで、テキストは明らかに二重引用符で区切られていると思います。

更新:

ご質問がある場合は、マニュアルをお読みください: http://dev.mysql.com/doc/refman/5.0/en/load-data.html

LOAD DATA ステートメントに、推論できるほど賢い情報を追加したところ、正しい数のレコードが読み込まれるようになりました。

リーリー

しかし、完全な NULL レコードがまだたくさんあり、ロードされたデータはどれも適切な場所にないようです。

P粉785957729P粉785957729415日前703

全員に返信(2)返信します

  • P粉057869348

    P粉0578693482023-10-10 10:07:31

    使用 mysqlimportテーブルをデータベースにロードします: リーリー

    私はそれを http://chriseiffel.com/everything-linux/how-to-import-a-large-csv-file-to-mysql/

    で見つけました。

    区切り文字をタブにするには、--fields-termerated-by='\t'

    を使用します。

    返事
    0
  • P粉210405394

    P粉2104053942023-10-10 00:32:34

    問題の核心は、CSV ファイル内の列とテーブル内の列を一致させることにあるようです。

    多くのグラフィカル mySQL クライアントには、この種のことを行うための非常に優れたインポート ダイアログ ボックスがあります。

    私の好きな仕事は Windows ベースの HeidiSQL です。 LOAD DATA コマンドを構築するためのグラフィカル インターフェイスが提供され、後でプログラムで再利用できます。

    スクリーンショット: [テキスト ファイルのインポート] ダイアログ ボックス

    [テキスト ファイルのインポート] ダイアログ ボックスを開くには、[ツール] > [CSV ファイルのインポート] に移動します。 :

    返事
    0
  • キャンセル返事