2012-03-06 48 views
0

我被要求在CSV文件上執行csv - > mysql插入操作。需要將大小不一的csv文件插入到數據庫中

他們有20k個csv文件,其中包含100到100k行數據。

所以這是我想我可以這樣做:

在我的機器,我可以參加所有文件到1用一個簡單的命令:

copy *.csv combined.csv 

,然後處理該文件,然後使用PHP fgetcsv處理該文件並將其插入到數據庫中。

或者

我可以寫,上面寫着一個目錄過程中的每個文件,並在完成時將其轉移到另一個文件夾中的PHP程序。

專用服務器可用

良好的PC可用

8GB內存你有什麼建議?

+1

無論你是否合併文件,你想通過['LOAD DATA INFILE']導入它們(http://stackoverflow.com/questions/3025648/import-csv-to-mysql) – Gordon 2012-03-06 23:15:06

+0

你應該已經把它作爲回答:) – Tarek 2012-03-07 00:28:25

+1

不,因爲如果那已經回答你的問題了,你的問題是重複的,應該關閉;) – Gordon 2012-03-07 08:24:22

回答

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; 
0

這將是一個更好的主意,做文件的文件。如果出現問題,這允許重新啓動,並且所有文件都是相同的?

您可以使用php腳本來生成sql命令並執行這些命令。

相關問題