第1行上的CSV输入中的列数无效错误

时间:2013-04-27 03:12:13

标签: php mysql excel csv

我正在尝试使用phpMyAdmin将“.csv”文件放到SQL数据库中。但是,每当我导入它时,我都会收到错误:第1行的CSV输入中的列数无效。 我花了一整天的时间玩各种不同的选择试图让它上班,但没有用。我的.csv文件中只有47列。我在SQL表中创建了47列。但是,名称与文件中的名称不完全相同。每当我导入时,它一直给我这个错误。 任何帮助将不胜感激! 〜Carpetfizz 我认为可能导致问题的一件事是第一列在我的Excel文档中没有命名。这会引起问题吗?

编辑12:30 AM:phpMyAdmin已经是最新版本,通过(apt-get install phpmyadmin)(phpmyadmin已经是最新版本)

Space in A1

Here是.csv文件,如果有帮助的话。

14 个答案:

答案 0 :(得分:61)

如果您的数据库表已经存在且您不希望在CSV文件中包含所有表的列,那么当您运行PHP管理导入时,您需要在特定于格式的选项中填写列名称字段CSV - 显示在以下屏幕截图的底部。

总结:

  • 选择CSV文件
  • 将格式设置为CSV
  • 使用CSV
  • 中的列名称填写“列名称”字段
  • 如果您的CSV文件在第1行中列出了列名,请设置“跳过此查询数(对于SQL)或行(对于其他格式),从第一个开始”到1

enter image description here

答案 1 :(得分:41)

固定!我基本上只选择了“导入”,甚至没有自己制作一张桌子。 phpMyAdmin为我创建了表,其中包含原始文档中所有正确的列名。

答案 2 :(得分:10)

使用phpMyAdmin导入.csv文件时出现同样的错误。

解决我的问题是我的电脑保存了.csv文件; (分号)作为分隔符而不是(逗号)。

在格式特定选项中,您可以选择“列分隔:”并选择;而不是,(逗号)。

要查看计算机存储文件的内容,请在文本编辑器中打开.csv文件。

答案 3 :(得分:3)

这实际上很容易修复,我最初是在大约10年前在这里https://ao.gl/phpmyadmin-invalid-field-count-in-csv-input-on-line-1/

上写过此修复程序的

您要做的是将“;终止于”的字段从“;”更改为设置为“”,然后确保选择了“使用本地关键字”。

enter image description here

答案 4 :(得分:1)

我刚刚遇到这个问题,并意识到有空列被视为带有值的列,我通过在文本编辑器中打开我的CSV看到了这一点。为了解决这个问题,我打开了我的电子表格并删除了我的最后一列之后的列,它们看起来完全是空的,但事实并非如此。在我这样做之后,导入工作完美。

答案 5 :(得分:1)

遇到同样的问题并做了两处更改:(a)没有覆盖现有数据(如果这是你的意图不理想,但你可以预先运行删除查询),并且(b)计算列并发现csv有一个空列,所以即使所有人看起来都是如此,回到原来的工作也总是有收获的。看起来不错。

答案 6 :(得分:1)

您将需要跳过第一行(定义了列名),并且需要检查哪个“字符”分隔了单元格(通常是,,在我的情况下是;

以下是我的进口照片:

enter image description here

答案 7 :(得分:0)

您的解决方案似乎假设您希望创建一个全新的表。

但是,如果要将内容添加到现有表格中,请查看表格的结构并记下列数(id列,如果有一个仍然计数 - >即使它可能是自动增量/ unique)

所以如果你的表看起来像这样 id姓名年龄性别

确保你的excel表看起来像 A1 id B1名称C1年龄D1性别

现在他们都有4列。

同样正确地在部分导入下,跳过查询的数量....增加数字以跳过相应的行。选择1将自动跳过第一行。对于那些可能在excel文件中有标题的人

答案 8 :(得分:0)

如果表已经创建,并且您懒得不在字段名称输入中指定列,那么您所要做的就是选择文件内容右侧的空列并删除它们。

答案 9 :(得分:0)

我和phpmyAdmin有类似的问题。要导入的文件中的列计数与目标数据库表中的列匹配。我尝试导入.csv和.ods格式的文件无济于事,得到各种错误,包括一个认为列数错误的错误。

.csv和.ods文件都是使用LibreOffice 5.204创建的。根据过去几年对导入问题的一些经验,我决定使用gnumeric电子表格重新制作文件,导出符合“严格”格式标准的.ods。瞧!没有更多的进口问题。虽然我没有时间进一步研究这个问题,但我怀疑LibreOffice文件输出的内部结构发生了一些变化。

答案 10 :(得分:0)

当遇到任何类型的输入文件出错时,编码问题很常见。

一个简单的解决方案可能是打开一个新文件,复制粘贴其中的CSV文本,然后将其另存为新文件。

答案 11 :(得分:0)

我的数据库的最后一列(它在电子表格中的列F)未使用,因此为空。当我导入excel CSV文件时,我得到了"列数"错误。

这是因为excel只保存我使用的列。 A-E

在F的第一行添加0解决了问题,然后在上传成功后删除了它。

希望这有助于节省其他人的时间和丢失头发:)

答案 12 :(得分:0)

有史以来最愚蠢的事情可以解决Microsoft Excel中的此错误(假设您实际上其他都正确):

选择数据,然后在保存CSV之前单击Excel中的“全部边框”(在数据周围放置可视边框)。听起来毫无意义?我完全同意!但是,它将解决此错误。我每周至少使用三次这种技巧。

答案 13 :(得分:0)

我在phpMyAdmin中也遇到了这个问题。 使用LOAD_DATA代替LOAD解决了问题

这些列是:

id,date,description,amount,payment_method 

,以id作为AUTO_INCREMENT主键。 记录是这样的:

,2019-01-01,Car insurance for year 2019,321.00,bank

表的编码为utf8_general_ci,文件的编码为utf-8

手动为列id设置值时,LOAD也会失败。