0

CSV ファイルに csv -> mysql 挿入するように要求されました。

100 から 100k 行のデータを含む 20k ファイルの csv があります。

だからここに私ができると思ったことがあります:

私のマシンでは、簡単なコマンドを使用してすべてのファイルを 1 つに結合できました。

 copy *.csv  combined.csv 

次にそのファイルを処理し、php fgetcsv を使用してそのファイルを処理し、DB に挿入します。

または

ディレクトリを読み取り、各ファイルを処理し、完了したら別のフォルダーに転送するphpプログラムを作成できます。

専用サーバーあり

8GBのメモリが利用可能な良いPC

何を指示してるんですか ?

4

2 に答える 2

3

LOAD DATA INFILEを使用します。ファイルごとにデータを挿入することをお勧めします。

LOAD DATA INFILE '/path/to/data.csv' 
INTO TABLE `table` 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 

20k ファイルのバッチ モードで実行します。コマンドにパスワードを入力して、要求されないようにします。

#!/bin/bash

for f in /path/to/*.csv;
do 
    mysql -uroot -pPASSWORD DATABASE \
    -e "LOAD DATA INFILE '$f' 
        INTO TABLE `table` 
        FIELDS TERMINATED BY ',' 
        LINES TERMINATED BY '\n'"
    echo $f is imported ...
done;
于 2012-03-06T23:22:32.930 に答える
0

ファイルごとに行う方がはるかに良い考えです。これにより、何か問題が発生した場合の再起動が可能になります。また、すべてのファイルは同一ですか?

PHPスクリプトを使用してSQLコマンドを生成し、それらを実行できます。

于 2012-03-06T23:15:12.740 に答える