【发布时间】:2013-12-16 18:52:14
【问题描述】:
我有以下功能:
function bulk_insert_file($filename) {
$file_location = 'assets/temp/'.$filename;
$sql = 'LOAD DATA LOCAL INFILE '."'$file_location'".' INTO TABLE p4p.users_csv_import
FIELDS TERMINATED BY \',\'
LINES TERMINATED BY \'\\r\\n\'
IGNORE 1 LINES';
$this->db->query($sql);
}
还有以下 CSV 文件:
,2,unique_id,first_name,last_name,email,company,nonprofit,username,password,dimension_data,raw_csv_data,
,2,unique_id,first_name,last_name,email,company,nonprofit,username,password,dimension_data,raw_csv_data,
,2,unique_id,first_name,last_name,email,company,nonprofit,username,password,dimension_data,raw_csv_data,
但是,当我运行代码时,没有导入任何数据。如果我删除 IGNORE 1 LINES 部分,我至少会导入第一行。
CREATE TABLE `users_csv_import` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`role_id` int(11) NOT NULL DEFAULT '1',
`unique_id` varchar(255) DEFAULT '',
`first_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`last_name` varchar(50) CHARACTER SET latin1 NOT NULL,
`email` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`company` int(11) NOT NULL DEFAULT '0',
`nonprofit` int(11) NOT NULL,
`username` varchar(100) CHARACTER SET latin1 NOT NULL DEFAULT '',
`password` varchar(34) CHARACTER SET latin1 NOT NULL DEFAULT '',
`dimension_data` text,
`raw_csv_data` text,
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
这是桌子上的规格..
【问题讨论】:
-
奇怪。
IGNORE 1 LINES应该导致它跳过标题...除非它上面有换行符?导入可能会失败,因为 id 和 unique_id 是空字符串。 -
其实它现在忽略了第一行,标题,但是做了以上调整后仍然没有导入。
-
如果 ID 是 int,它只能是数字。由于它是 AUTO_INCREMENT,因此您可能应该将其完全排除在文件导入之外。
-
我能够让它导入第一行。但是,它不会导入任何额外的行,除非我在每行的末尾添加一个字段终止符 ','。
-
您是否尝试删除该 ID?或使用有效的数字 ID