将CSV文件加载到MYSQL数据库中而不是导入行

时间:2013-12-16 18:52:15

标签: php mysql csv import

我有以下功能:

    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;

这是表格中的规格..

1 个答案:

答案 0 :(得分:0)

我假设csv文件采用unix行终止符格式。 因此,您应尝试使用LINES TERMINATED BY \'\\n\'进行导入。