【问题标题】:Loading CSV file into MYSQL database not importing rows将 CSV 文件加载到 MYSQL 数据库中而不是导入行
【发布时间】: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

标签: php mysql csv import


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-10-27
    • 2014-07-04
    • 2016-04-17
    • 2017-11-15
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 2020-09-12
    • 2020-02-23
    相关资源
    最近更新 更多