【问题标题】:Warning 1261 Row n doesn't contain data for all columns警告 1261 第 n 行不包含所有列的数据
【发布时间】:2020-06-03 15:31:40
【问题描述】:

我需要将数据从 CSV 文件加载到 Windows 10 中的 Mysql 表中。 我在 MySQL Workbench 8.0.20 中使用的命令是:

LOAD DATA INFILE "C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/Sample.txt" IGNORE INTO TABLE TableA
FIELDS OPTIONALLY ENCLOSED BY '"'
TERMINATED BY ',' 
LINES TERMINATED BY '\r\n' 
(col1, col2, col3, col4, col5, col6, col7, col8,
 col9, col10, col11, col12, col13, col14, col15,
 dummy_1, dummy_2, dummy_3, dummy_4, dummy_5) ;

原始输入文件是 Sample.csv。 当我运行 LOAD cmd 时出现错误

错误 1261 第 1 行不包含所有列的数据。

第 2 - 13 行的类似错误。

我使用记事本将 CSV 文件保存为文本文件 (Sample.txt)。我对文本文件有同样的错误。它只给出文本文件中前 13 行的错误。所以我删除了前 13 行并再次运行 LOAD。我仍然只收到第 1 到第 13 行的相同警告。

仅供参考,每行没有相同数量的字段。 任何解决此问题的帮助将不胜感激。

【问题讨论】:

    标签: mysql mysql-workbench


    【解决方案1】:

    错误消息非常清楚,只是说 CSV 文本文件中的某些行没有 20 个数据点。您可以尝试使用以下正则表达式模式来突出显示文件中不匹配的行:

    ^(?!(?:[^,]*,){19}[^,]*$).*$
    

    Demo

    【讨论】:

    • 对不起..我不熟悉使用正则表达式。可以在 SQL 语句中使用正则表达式模式吗?
    • @JayJohn 好吧,我建议您在文件Sample.txt 上进行正则表达式查找,以突出显示不匹配的行。你还不能使用 SQL,因为你甚至没有表。
    • 您上面给出的正则表达式模式是否计算文件中逗号的数量?我试图了解它到底代表什么。谢谢。
    • 嗨,Jay,正则表达式模式断言行 not 有 19 个逗号(= 20 个术语)。如果是这样,那么这样的行将丢失插入查询中所有 20 列的数据。
    • 不,不清楚@TimBiegeleisen。我遇到了同样的问题。看起来 mySQL 无法正确解析 \n 附带的 csv 文件。我使用 csv 阅读器检查了一个 python 脚本。我所有的行都包含 4 个有效字段,尽管如此,mySQL 在某些行中说,我没有足够的字段??‍♂️
    猜你喜欢
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    相关资源
    最近更新 更多