2013-07-05 62 views
0

我遇到與列/字段不匹配的問題,當我嘗試將數據插入到MySQL中。我目前的表格有306列/字段(尚未規範化/優化,但將來會出現)。前306個字段總是正確的數據,需要保存在mysql中。前306個字段後的所有內容都可以刪除/清除。這是我的PHP代碼注射:php帶或刪除額外的列/逗號分隔爲mysql

$source = "http://www.aviationweather.gov/adds/dataserver_current/current/tafs.cache.csv"; 

$file = file($source); 
    for($i = 0; $i < 6; $i++) array_shift($file); 
     foreach($file as $line) { 
      $csv = str_getcsv($line); 
      if (!$db->query("INSERT INTO tafs VALUES('" . implode("','", $csv) . "');")) { 
      } else { 
      $n++;   
      } 
     } 

的CSV源文件每分鐘更新一次,有時就會有正確的306列,其他時間將有1500-2000沒有明顯的原因。這打破了我的可怕可怕,因爲數據是高度動態的我不能使用rtrim功能= \ ...

任何有什麼想法?我一直堅持一段時間...花了一個小時尋找php命令/例子,大約2個小時的mysql命令...我錯過了什麼嗎?

感謝您的支持,7月4日開心!

-Mikael

+0

306列:是你需要在你的數據庫結構的一些認真思考。而不是使用str_getcsv嘗試fgetcsv。需要說明的是,實際的csv文件有時包含2000列,或者當您執行implode時,它包含額外的列? – Kris

+0

csv文件可以...儘管我有306列,但我的最大行大小隻有3000字節,遠低於最大65k字節。我試過str_getcsv和fgetcsv都導致相同的問題。 – Mikael

回答

0

我相信你正在尋找array_slice

$csv = array_slice(str_getcsv($line), 0, 306)

+0

您先生是紳士和學者,感謝您的快速回復! – Mikael