将大量CSV导入MySQL57的问题 - 某些列中的错误整数值

时间:2016-05-03 00:31:41

标签: mysql

我无法将800 MB CSV文件导入MySQL 5.7。

基本上,我收到3列警告,具体行如下:

  

5290818受影响的行,6警告:1366不正确的整数值:   ''对于列'hotel_id'在第308行1366不正确的整数值:''   对于第336行的列'currency_id'1366不正确的整数值:''   对于第339行的“hotel_id”列1366不正确的整数值:''表示   行'available_cnt'在第7399行1366不正确的整数值:''   对于第7508行的“available_cnt”列1366不正确的整数值:   ''对于第7700行的列'available_cnt'记录:5290818已删除:0   跳过:0警告:6

据我所知,这需要将用户变量替换为有问题的列,并执行一些检查。

但是,我不懂语法,有人可以向我解释一下吗?

谢谢!

以下是我用于将CSV文件导入MYSQL

的内容
LOAD DATA LOCAL INFILE 'C:/Users/Li/Downloads/offer.csv' 
INTO TABLE offer
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

这是表创建的代码:

CREATE TABLE `primary_data`.`oFfer` (
  `id` INT NOT NULL,
  `hotel_id` INT NULL DEFAULT NULL,
  `currency_id` INT NULL DEFAULT NULL,
  `source_system_code` VARCHAR(64) NOT NULL,
  `available_cnt` INT NULL DEFAULT NULL,
  `sellings_price` FLOAT NOT NULL,
  `checkin_date` DATE NOT NULL,
  `checkout_date` DATE NOT NULL,
  `valid_offer_flag` TINYINT(1) NOT NULL,
  `offer_valid_from` DATETIME NOT NULL,
  `offer_valid_to` DATETIME NOT NULL,
  `breakfast_included_flag` TINYINT(1) NOT NULL,
  `insert_datetime` DATETIME NOT NULL,
   PRIMARY KEY (`id`));

1 个答案:

答案 0 :(得分:1)

由于它只有少量项目,因此可以手动处理此任务。首先要注意的是,mysql不提供任何关于'默认排序顺序的保证。但是,由于这是一个新表,我们可以确信按照插入的顺序返回行。因此,以下查询将显示308处的内容:

SELECT * FROM offer LIMIT 307, 1

请注意,偏移量必须比实际行数少1。现在,您可以使用正确的值(使用上述查询向您显示的ID)更新它

UPDATE offer set hotel_id = something where id = someid

重复这5次,你就完成了。