我正在尝试使用phpMyAdmin将“.csv”文件放到SQL数据库中。但是,每当我导入它时,我都会收到错误:第1行的CSV输入中的列数无效。 我花了一整天的时间玩各种不同的选择试图让它上班,但没有用。我的.csv文件中只有47列。我在SQL表中创建了47列。但是,名称与文件中的名称不完全相同。每当我导入时,它一直给我这个错误。 任何帮助将不胜感激! 〜Carpetfizz 我认为可能导致问题的一件事是第一列在我的Excel文档中没有命名。这会引起问题吗?
编辑12:30 AM:phpMyAdmin已经是最新版本,通过(apt-get install phpmyadmin)(phpmyadmin已经是最新版本)
Here是.csv文件,如果有帮助的话。
答案 0 :(得分:61)
如果您的数据库表已经存在且您不希望在CSV文件中包含所有表的列,那么当您运行PHP管理导入时,您需要在特定于格式的选项中填写列名称字段CSV - 显示在以下屏幕截图的底部。
总结:
答案 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/
上写过此修复程序的您要做的是将“;终止于”的字段从“;”更改为设置为“”,然后确保选择了“使用本地关键字”。
答案 4 :(得分:1)
我刚刚遇到这个问题,并意识到有空列被视为带有值的列,我通过在文本编辑器中打开我的CSV看到了这一点。为了解决这个问题,我打开了我的电子表格并删除了我的最后一列之后的列,它们看起来完全是空的,但事实并非如此。在我这样做之后,导入工作完美。
答案 5 :(得分:1)
遇到同样的问题并做了两处更改:(a)没有覆盖现有数据(如果这是你的意图不理想,但你可以预先运行删除查询),并且(b)计算列并发现csv有一个空列,所以即使所有人看起来都是如此,回到原来的工作也总是有收获的。看起来不错。
答案 6 :(得分:1)
答案 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也会失败。