我将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语法文档以了解更多信息,在那里您可以找到如何在代码中应用它的示例。