2012-03-14 21 views
1

私はcsvファイルの内容をmysqlデータベースにアップロードしています。 どのアプローチが最も良いかわからない&効率的& nice。効率的なcsvファイルのアップロード方法

1]解析し、例えばためのファイル をインポートするために、スクリプトを使用してLOAD DATAのINFILE SQL文

LOAD DATA LOCAL INFILE '/importfile.csv' 
INTO TABLE test_table 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
(field1, filed2, field3); 

2]を使用してPHPのfgetcsv()関数

+2

特定の方法は、2つをベンチマークすることだけです。しかし、私のお金は、スピードと使いやすさのために、もっとも間違いなく「LOAD DATA LOCAL INFILE」です。 –

+0

'fgetcsv()'を使うと、複数の 'INSERT'文を呼び出すか、VALUES()、()、()、()で非常に長い' INSERT'文を構築するコードを書く必要があります。 、()... 'チェーン。 MySQLでネイティブのCSVインポートがはるかに簡単になります。 –

答えて

2

データベースに直接ロードする方が、スクリプトの実行、読み込み/解析、クエリの組み立てなどのオーバーヘッドはありません。データは以上です。

これを手動で100回手動で実行する必要がある場合は、スクリプトのような自動化されたものが必要になります。次に、あなたの個人的な効率と努力のレベルを考慮する必要があります。

3

あなたはCVSの内容を確認することができた場合は、使用方法1.

しかし、あなたがわからない場合は、ファイルの内容の一部健全性チェックを行うためのスクリプトを望むかもしれません。この場合、方法2を使用してください。

+0

あなたの2番目のポイントは非常に重要です。それに対して+1。 –

1

LOAD DATA INFILE SQLを使用しない理由は、データの一部を処理する場合だけです。たとえば、挿入する前にデータを変換または結合する必要があった場合などです。しかし、もしそれがまっすぐに輸入されれば、これははるかに速いです。

1

私は個人的にはLOAD DATA INFILEを好んでいますが、スクリプトによる読み込みでは通常複数のinsert文が使用されるためです。 CSVを変更する必要がある場合は、スクリプトからはるかに簡単ですが、私の経験ではLOAD DATA INFILEが高速です。

関連する問題