クライアントからの正規化されていないイベント ログ 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
レコードがまだたくさんあり、ロードされたデータはどれも適切な場所にないようです。
使用 mysqlimportテーブルをデータベースにロードします: p> リーリー
私はそれを http://chriseiffel.com/everything-linux/how-to-import-a-large-csv-file-to-mysql/
で見つけました。区切り文字をタブにするには、
を使用します。--fields-termerated-by='\t'
問題の核心は、CSV ファイル内の列とテーブル内の列を一致させることにあるようです。
多くのグラフィカル mySQL クライアントには、この種のことを行うための非常に優れたインポート ダイアログ ボックスがあります。
私の好きな仕事は Windows ベースの HeidiSQL です。
LOAD DATA
コマンドを構築するためのグラフィカル インターフェイスが提供され、後でプログラムで再利用できます。スクリーンショット: [テキスト ファイルのインポート] ダイアログ ボックス
[テキスト ファイルのインポート] ダイアログ ボックスを開くには、
[ツール] > [CSV ファイルのインポート] に移動します。
: