2013-01-02 92 views
0

我有一個csv文件,26,000行,我循環行和更新記錄(有時多個)在一個表中有250,000 +記錄。此刻,它的年齡!我在想,如果有辦法做到這一點更快基於什麼如何通過CSV循環更新mysql更新更快?

$row = 1; 
if (($handle = fopen("zip-codes-database-DELUXE-BUSINESS2.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
      if($row> 1){ 


       # GET THE AREACODE FROM data 20 

       # name is: 21 

       $insert = "UPDATE ".TBLPREFIX."cities SET data = '".escape(serialize($data))."' WHERE area_code = ".$data[20]." AND title = '".trim(strtoupper($data[21]))."'"; 
       mysql_query($insert) or die(mysql_error()); 
      } 
      $row++; 
    } 
    fclose($handle); 
} 
+0

你可以發佈你的表結構,包括索引嗎? – ESG

回答

3

的另一種方式(代碼或MySQL的/ etc),我可能會嘗試:

  1. 通過CMD線得到CSV到一個表或「LOAD DATA INFILE」
  2. 更新記錄到使用臨時表「插入...選擇」在那裏你加入新老
  3. 移動臨時表返回到原來的(刪除/重命名)

似乎它會更快..如果有點kludgy。