2017-06-08 74 views
2

我已經寫了一個查詢,我已經發布在這裏,但是與類似的csv.I需要加載數據本地infile查詢,這將與各種csv file.Please看看它。mysql爲一個csv字段加載數據本地infile,並終止另一個csv字段;

下面的查詢適用於各種csv文件,其中的字段用。分隔。 例如CSV

1,114300,1790,2,2,2,No,East 
2,114200,2030,4,2,3,No,East 
3,114800,1740,3,2,1,No,East 
4,94700,1980,3,2,3,No,East 

查詢看起來像這樣:

LOAD DATA LOCAL INFILE '$pathname' 
       IGNORE INTO TABLE $name 
       FIELDS TERMINATED BY ',' 
       OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' 
       LINES TERMINATED BY '\\n' 
       IGNORE 1 LINES" 

另一個CSV是這樣

Agfa ePhoto 1280;1997;1024.0;640.0;0.0;38.0;114.0;70.0;40.0;4.0;420.0;95.0;179.0 
Agfa ePhoto 1680;1998;1280.0;640.0;1.0;38.0;114.0;50.0;0.0;4.0;420.0;158.0;179.0 
Agfa ePhoto CL18;2000;640.0;0.0;0.0;45.0;45.0;0.0;0.0;2.0;0.0;0.0;179.0 
Agfa ePhoto CL30;1999;1152.0;640.0;0.0;35.0;35.0;0.0;0.0;4.0;0.0;0.0;269.0 
Agfa ePhoto CL30 Clik!;1999;1152.0;640.0;0.0;43.0;43.0;50.0;0.0;40.0;300.0;128.0;1299.0 

在查詢我只是改變由終止字段 '' 到 ';' 。它適用於我。我需要通過一個查詢來完成所有工作。我正在尋求幫助。

回答

1

我提取了csv文件名及其路徑,並將其存儲在名爲$ filename的變量中。

$file = new SplFileObject($filename);//it holds the name and location means path to csv 
$file->seek(0);//It holds the first line of csv 
if (strpos($file, ';') == true){ 

$field = "FIELDS TERMINATED BY ';'"; 
} 
if (strpos($file, ',') == true){ 
$field = "FIELDS TERMINATED BY ','"; 
} 

然後編輯這樣的查詢

LOAD DATA LOCAL INFILE '$pathname' 
       IGNORE INTO TABLE $name 
       $field 
       OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' 
       LINES TERMINATED BY '\\n' 
       IGNORE 1 LINES" 

它適用於所有的字段結束的,和CSV文件。

+0

這也適用於我 –

相關問題