我已经将我的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;
}
答案 0 :(得分:2)
你应该检查你的默认字符集!
像application.ini
这样强制它:
resources.db.params.charset = utf8
用你正在使用的字符集替换utf8
(如果需要)!
答案 1 :(得分:0)
您应该考虑使用MySQL的内置LOAD DATA INFILE
语句将该CSV文件导入数据库。根据您要导入的行数,这将大大缩短导入时间,因为它是一个简单的查询,而不是数据库服务器上的一堆查询。请查看LOAD DATA INFILE Syntax文档以获取更多信息,您可以在其中找到有关如何在代码中应用该文档的示例。