2011-06-25 10 views
0

私はデータベーステーブルに変換したいさまざまなcsvファイルを用意しています。非一貫性のあるcsvファイルからのデータベース生成

csvファイルが常に一貫しているとは限りません。つまり、列が常に同じ場所にない可能性があります。たとえば、次のように

--First scenario-- 
col1, col2, col3, col4, col5 
1,2,3,4,5 

--second scenario-- 
col3,col4,col1,col5,col2 
3,4,1,5,2 

--Theシナリオの無限大ですし、

情報は同じですが、データが配置されているためであるin--列がされる注文何を予測することも可能ではありませんcsvファイル内のファイルは異なっています。私はcsvファイルから一貫性のあるデータベーステーブルを生成できなければならないので、テーブルの作成時にはいつでも列がどの順序であっても常に1つの形式になります。

私はcsvファイルから一時テーブルを生成し、一時テーブルを必要なフォーマットに変換できると考えていました。しかし、私はそれをどうやって行うのか、それが可能なのかどうかは分かりません。

ありがとうございます。この問題を解決する方法について、他の人が助けてくれることを願っていますか?

+1

列の値にパターンがありますか?存在しない場合、状況は憂鬱に見えます。そして、パターンがなければ、列が順不同でないかどうかを知ることは難しいと思います。 – Scott

+0

列名は決して変更されませんが、多くの異なるファイルがあります。プロセスを自動化して、混乱した形式でcsvファイルをアップロードできるようにしなければなりません。処理によって列とデータが標準化された形式に再配置されます。 – Toret

+0

私はそれを正しく理解していれば、各ファイルの残りの列のレイアウトが異なりますが、個々のファイルの内容はそのファイル(およびそのファイルのみ)と一貫しているため、したがって、ファイル "A"は、col1、col3、col2、col5、col4、およびファイル "B"の一貫した構造を持っています(つまり、話す)col5、col2、col1、col5、col3の一貫した構造を持っていますか? – Scott

答えて

0

最初の行を使用して列をプログラムで並べ替える方法を理解することができれば、良い結果が得られます。私はこれを自動的にまたはMySQLで直接行う良い方法はないと思います。第二に、あなたは自分のSQLでカラム名を設定し、それを再配置せずにデータをロードすることができます

LOAD DATA INFILE 'file.txt' INTO TABLE table (col3, col1, col2, col4)

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

は、デフォルト形式としてCSVへのTSVから変更するFIELDS TERMINATED BY ','が必要になる場合があります。

0

あなたの目の前で非常に面倒な作業があるようです。

Excelでファイルを開き、列を並べ替えてからCSV形式で再保存すると、クリーンアップを高速化できます。

関連する問題