0

我已将我的 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;
}
4

2 回答 2

2

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

resources.db.params.charset = utf8

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

于 2012-07-30T20:12:22.553 回答
0

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

于 2012-07-30T20:39:19.557 回答