0

mysql データベースの基礎となる多数の csv ファイルがあります。私の問題は次のとおりです。

入力 CSV ファイルの形式は次のとおりです。

時間 | 値パラメータ 1 | 値パラメータ 2 | 値パラメータ 3 | 等。
0.00001 | 10 | 20 | 30 | 等

これは、データベースで使用したい構造ではありません。そこで、次のような構造のすべてのデータに対して 1 つの大きなテーブルが必要です。

時間 | パラメータ | 値 | 測定単位 | バージョン

これは、CSV から TIME と VALUE PARAM 1 の組み合わせをテーブルに挿入し、次に TIME と VALUE PARAM 2 の組み合わせなどを挿入したいということです。

私はこれまでにこのようなことをしたことがありませんが、可能な解決策は、列をループし、各反復で時間と値の組み合わせをデータベースに挿入する BASH スクリプトを設定することでしょうか?

私は mysql についてある程度理解していますが、bash スクリプトについての知識は非常に限られています。しかし、mysql LOAD DATA INFILE コマンドで解決策を見つけることができませんでした。

ご不明な点がございましたら、お気軽にお問い合わせください。

よろしく、

エリック

4

2 に答える 2

1

私はこれを一日中、毎日行います。原則として、一時テーブルに LOAD DATA INFILE を使用し、mySQL の機能を活用して最終的なテーブル/フォーマットに正常に取得することで、頭痛を最小限に抑えて最大の成功を収めています。この回答の詳細。

これをさらに説明すると、全国の 80,000 の高校/大学のすべてのビデオ イベントのログ ファイルを処理します (これは、数十万のビデオ のすべての一時停止/再生/シーク/停止/開始です)。

ビデオの種類 (WMV、FLV、MP4 など) に応じて、多数の異なるサーバーから提供されるため、毎晩 200 GB ほど処理する必要があり、各形式のログ レイアウトは異なります。CSV/PHP で行っていた古い方法では、完了まで文字通り数日かかりましたが、それを LOAD DATA INFILE に変更して一時テーブルに入れ、それらを 2 番目の標準化された一時テーブルに統合し、次に SQL を使用してグループ化し、そうでなければスライス アンド ダイスで実行を切り詰めました。時間から数時間。

于 2012-06-10T15:28:23.173 に答える