使用PHP将CSV导入mysql


importing CSV into mysql with PHP

我将csv文件插入到MYSQL中。有时会插入,但数据库中有一些特殊字符,如0,'â8。我使用的是zend框架。

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

您应该检查您的默认字符集!像这样在application.ini中强制它:

resources.db.params.charset = utf8

用您正在使用的字符集替换utf8(如果需要)!

您应该考虑使用MySQL内置的LOAD DATA INFILE语句将CSV文件导入数据库。根据您必须导入的行数,这将大大缩短导入时间,因为这是一个简单的查询,而不是数据库服务器上的一堆查询。查看LOAD DATA INFOILE语法文档以了解更多信息,在那里您可以找到如何在代码中应用它的示例。