csv导入错误的Mysql排序规则/类型第1362行的CSV输入中的列计数无效

Posted

技术标签:

【中文标题】csv导入错误的Mysql排序规则/类型第1362行的CSV输入中的列计数无效【英文标题】:Mysql collation/type for csv import error Invalid column count in CSV input on line 1362 【发布时间】:2020-09-09 10:43:08 【问题描述】:

我在 csv 中有数据,我正在尝试使用 mysql GUI 以“CSV”格式将其导入数据库。

执行此操作时出现错误:“第 1362 行的 CSV 输入中的列数无效。”

在 CSV 文件中,第 1362 行包含带有重音字符的文本,删除重音后,此错误就会消失。但是,导入包含相同重音字符的其他一些行没有任何错误。

我如何设置我的数据库和 csv 文件

csv 文件是使用 python 的 csv.writer 创建的。使用 GUI 导入数据时,我选择了显示“文件字符集:utf-8”的选项

整个数据库的排序规则是utf8mb4_0900_ai_ci。有问题字符的列的类型为 Varchar(250),排序规则为 utf8_bin。

我尝试了什么

根据对以下问题的一些答案,我尝试将列和数据库的排序规则更改为utf_unicode_ciutf16。我尝试使用“CSV 加载数据”格式。

Multilingual Datatype in MYSQL

Trouble importing/replacing a table w CSV in phpMyAdmin: Invalid column count in CSV input on line 1

使用 CSV 加载数据时出现以下错误:

#1300 - Invalid utf8mb4 character string: '"Bille na dTeangacha Oifigi'

我会注意到,在文本中,上述字符串后面的字符是一个重音字符,会导致错误。

即使列的排序规则是utf_unicode_ci,也会出现引用utf8mb4 的相同错误。由此我认为问题在于整个表的排序规则是utf8mb4

错误消息似乎表明排序规则是问题的根源。我尝试了很多排序规则组合,但没有取得任何进展。谁能指出我如何解决这个问题的正确方向?

【问题讨论】:

【参考方案1】:

我解决了这个问题。问题在于如何创建 csv 文件。我必须指定 python 使用 utf-8 编码保存文件。像这样的:

with open('foobar.csv', 'w', encoding='utf-8') as f:
for row in tempTable:
    writer = csv.writer(f)
    writer.writerow(row)

【讨论】:

以上是关于csv导入错误的Mysql排序规则/类型第1362行的CSV输入中的列计数无效的主要内容,如果未能解决你的问题,请参考以下文章

mysql 表导入向导无法导入 csv 文件

如何将sqlite数据导入mysql?

通过phpmyadmin将csv文件导入mysql

通过 CSV 导出/导入 mysql json 对象

phpmyadmin 导入 cvs文件,出现中文乱码,如何解决?

mysql 导入 csv文件中数据,只能导入第一行