2012-07-30 129 views
0

我已經將我的csv文件插入到MYSQL中了。有時候它確實存在,但是在數據庫中有一些特殊字符,例如0,'?8.我使用zend框架。用PHP導入CSV到MySQL

public function indexAction() { 
    $db = Zend_Db_Table::getDefaultAdapter(); 
    $path = 'c:/RAA/test.csv'; 
    $row = 1; 
    $result = array(); 
    if (($handle = fopen("c:/RAA/test.csv", "r")) !== FALSE) { 
     while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
      $num = count($data); 
      $row++; 
      for ($i=0; $i < $num; $i++) { 
       $result = array(
        'id' => $data[$i], 
        'name' => $data[$i], 
        'description' => $data[$i] 
       ); 
      } 
      $db->insert('test', $result); 
     } 
    } 
    exit; 
} 
+3

這裏有問題嗎? – Matt 2012-07-30 20:12:24

回答

2

你應該檢查你的默認字符集!您所使用的字符集

resources.db.params.charset = utf8 

更換utf8(如果需要): 迫使它在application.ini這個樣子!

+0

感謝您的突然reply.IS我的代碼正確? – user1230541 2012-07-30 20:16:01

+0

還在得到應用程序錯誤 – user1230541 2012-07-30 20:25:12

+0

沒有看到一個明顯的問題...所以我認爲是的。你真的必須檢查字符集:你的代碼文件,你的數據庫表和你的代碼和表之間的連接(通過我的解決方案做到這一點)) – PoulsQ 2012-07-30 20:26:03

0

您應該考慮使用MySQL內置的LOAD DATA INFILE語句將該CSV文件導入數據庫。根據您要導入的行數,這將大大縮短導入時間,因爲這是一個簡單的查詢,而不是數據庫服務器上的一堆查詢。請參閱LOAD DATA INFILE Syntax文檔以獲取更多信息,在那裏您會找到有關如何在代碼中應用該示例的示例。

+0

謝謝你。如何找到我正在使用的字符集 – user1230541 2012-07-30 21:32:46