使用PHP将CSV导入mysql

时间:2012-07-30 20:10:36

标签: php mysql zend-framework csv

我已经将我的csv文件插入到MYSQL中。有时它确实存在,但数据库中有一些特殊字符,如0,''我正在使用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;
}

2 个答案:

答案 0 :(得分:2)

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

resources.db.params.charset = utf8

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

答案 1 :(得分:0)

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