我在将 800 MB CSV 文件导入 MySQL 5.7 时遇到问题。
基本上,我收到 3 列的警告,具体行如下:
5290818 row(s) affected, 6 warning(s): 1366 Incorrect integer value: '' for column 'hotel_id' at row 308 1366 Incorrect integer value: '' for column 'currency_id' at row 336 1366 Incorrect integer value: '' for column 'hotel_id' at row 339 1366 Incorrect integer value: '' for column 'available_cnt' at row 7399 1366 Incorrect integer value: '' for column 'available_cnt' at row 7508 1366 Incorrect integer value: '' for column 'available_cnt' at row 7700 Records: 5290818 Deleted: 0 Skipped: 0 Warnings: 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`));
最佳答案
由于只有少量项目,因此可以手动处理此任务。首先要注意的是 mysql 不提供任何关于“默认排序顺序”的保证。然而,由于这是一个新表,我们可以确信行返回的顺序与插入时的顺序相同。因此以下查询将向您显示 308 处的内容:
SELECT * FROM offer LIMIT 307, 1
请注意,偏移量必须比实际行号小 1。现在您可以使用正确的值更新它(使用上述查询显示给您的 id)
UPDATE offer set hotel_id = something where id = someid
重复 5 次即可完成。
关于mysql - 将大型 CSV 导入 MySQL57 时出现问题 - 某些列中的整数值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36993737/