【问题标题】:Is there a way to skip over rows when error encountered whilst loading data from CSV? (Error code: 1261)从 CSV 加载数据时遇到错误时,有没有办法跳过行? (错误代码:1261)
【发布时间】:2020-03-13 02:36:24
【问题描述】:

我正在使用 MySQL 将 1000 万行以上的行从 CSV 文件加载到数据库中。不幸的是,每次我尝试它时它都会返回一个错误(“第 3816836 行不包含所有列的数据”)。我已经下载了可以可视化大型 CSV 的软件,据我所知,数据没有任何问题。某些列中存在缺失值(成功加载的数百万行中的大多数都存在缺失值)。该表设置为 NULL 默认值。所以我完全不知道如何成功加载数据。

有没有办法跳过这一行!?加载过程中的任何错误处理将不胜感激。

USE data;
LOAD DATA INFILE "data.csv"
INTO TABLE master
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS

【问题讨论】:

  • 没有官方方法可以跳过它。我假设该行包含错误的数据,因此无法插入。您能否添加创建表 DDL 和该 csv 的虚假行以及之前和之后的一些其他行作为示例?我认为该行周围有一个魔术/隐藏或可能未转义的字符。

标签: mysql sql csv load-data-infile


【解决方案1】:

虽然这在技术上不是我所问问题的解决方案,但我在短期内解决了这个问题。我使用 Python 来提取行,并添加了两个单独的 CSV(在问题行之前和之后)。能看问题行,好像是因为一个单独的“/”。删除它使我能够单独添加该行。

这是解决问题的一种方法!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多