在 phpMyAdmin 中导入/替换带有 CSV 的表时遇到问题:第 1 行的 CSV 输入中的列数无效
Posted
技术标签:
【中文标题】在 phpMyAdmin 中导入/替换带有 CSV 的表时遇到问题:第 1 行的 CSV 输入中的列数无效【英文标题】:Trouble importing/replacing a table w CSV in phpMyAdmin: Invalid column count in CSV input on line 1 【发布时间】:2013-11-10 19:43:30 【问题描述】:我正在尝试用新数据替换 phpMyAdmin 中的表。 我在网上搜索了试图找到我的问题的答案,但没有运气。 我不确定问题是在我的 CSV 中还是在 phpMyAdmin 导入设置中。
这是我尝试导入的 CSV 文件前两行的示例...
'CA1923', '6320 Canoga Avenue', '', '6320 Canoga Avenue', NULL, 'Woodland Hills', 'CA', '91367', 'USA', NULL, NULL, NULL, 'info@connexusvideo.com', NULL, NULL, '0', NULL, NULL, NULL, NULL, '0', NULL, NULL, '0', 'http://www.google.com/mapfiles/markerN.png', '-118.5961599', '34.1851569', '12', '8', '42', '1', '0', '6320 Canoga Avenue Woodland Hills CA', '6320 Canoga Avenue Woodland Hills CA', '0', 'CA1923', '0', '6', '0',
'CA1927', '425 Market Street', '', '425 Market Street', NULL, 'San Francisco', 'CA', '94105', 'USA', NULL, NULL, NULL, 'info@connexusvideo.com', NULL, NULL, '0', NULL, NULL, NULL, NULL, '0', NULL, NULL, '0', 'http://www.google.com/mapfiles/markerN.png', '-122.3981953', '37.7912401', '12', '8', '42', '1', '0', '425 Market Street San Francisco CA', '425 Market Street San Francisco CA', '0', 'CA1927', '0', '7', '0',
这是从该表的 SQL 文件中导出的列标题...
INSERT INTO `conx_gmapfp` (`id`, `nom`, `alias`, `adresse`, `adresse2`, `ville`, `departement`, `codepostal`, `pay`, `tel`, `tel2`, `fax`, `email`, `web`, `img`, `album`, `intro`, `message`, `horaires_prix`, `link`, `article_id`, `icon`, `icon_label`, `affichage`, `marqueur`, `glng`, `glat`, `gzoom`, `catid`, `userid`, `published`, `checked_out`, `metadesc`, `metakey`, `ordering`, `room_id`, `distance`, `ZipRmID`, `rStatus`) VALUES
我认为应该起作用的导入设置如下...
格式 = CSV
将数据表替换为文件 = 已检查
用: , 分隔的列
用“'”括起来的列
列转义为:/
以:auto 结尾的行
但是,每次我收到此错误“第 1 行的 CSV 输入中的列数无效。”
现有表中有 39 列,CSV 中有 39 列。每列都用 分隔,并用 '
括起来这里有什么问题以及如何解决这个问题?我花了一整天的时间试图弄清楚简单的解决方案是什么,但无法弄清楚。我知道它必须是基本的,但我已经尝试过任何东西。我放弃。帮助!
【问题讨论】:
这显然意味着您的目标表列数与 CSV 列数不匹配。检查该列并在此处发布您的表结构或创建表语法。这将有助于分析问题。 感谢@VazhgaValamudan 的回复!是的,我已经检查了该专栏并且据我所知似乎是正确的。我刚刚添加了从上表的 SQL 中导出的列标题。非常感谢任何帮助解决这个问题! 【参考方案1】:问题:
此问题是因为您的示例数据行(行)以 ,(逗号) 结尾。因此系统无法识别该行。也就是说,系统认为第二个记录也是第一个记录的延续。所以你得到“第 1 行的 CSV 输入中的列数无效。”。
解决方案:
从行(行)的每一端删除 ,(逗号)。然后你就可以毫无问题地导入了。
导入以下示例数据:
'CA1923', '6320 Canoga Avenue', '', '6320 Canoga Avenue', NULL, 'Woodland Hills', 'CA', '91367', 'USA', NULL, NULL, NULL, 'info@connexusvideo.com', NULL, NULL, '0', NULL, NULL, NULL, NULL, '0', NULL, NULL, '0', 'http://www.google.com/mapfiles/markerN.png', '-118.5961599', '34.1851569', '12', '8', '42', '1', '0', '6320 Canoga Avenue Woodland Hills CA', '6320 Canoga Avenue Woodland Hills CA', '0', 'CA1923', '0', '6', '0'
'CA1927', '425 Market Street', '', '425 Market Street', NULL, 'San Francisco', 'CA', '94105', 'USA', NULL, NULL, NULL, 'info@connexusvideo.com', NULL, NULL, '0', NULL, NULL, NULL, NULL, '0', NULL, NULL, '0', 'http://www.google.com/mapfiles/markerN.png', '-122.3981953', '37.7912401', '12', '8', '42', '1', '0', '425 Market Street San Francisco CA', '425 Market Street San Francisco CA', '0', 'CA1927', '0', '7', '0'
【讨论】:
非常感谢,这很有意义。但是,我无法弄清楚如何删除每行末尾的 , ,因为我什至在 excel 中查看时都看不到那些逗号,但是当我从 excel 中导出 CSV 时,这是如何制作 CSV 的。对于 1742 行,如何删除 CSV 每一行末尾的逗号?谢谢! 我原来的行是这样提供给我的... "(1, '6320 Canoga Avenue', '', '6320 Canoga Avenue', NULL, 'Woodland Hills', 'CA ','91367','美国',NULL,NULL,NULL,'info@connexusvideo.com',NULL,NULL,0,NULL,NULL,NULL,NULL,0,NULL,NULL,0,'google.com/mapfiles/markerN.png ', '-118.5961599', '34.1851569', '12', 8, 42, 1, 0, '6320 Canoga Avenue Woodland Hills CA', '6320 Canoga Avenue Woodland Hills CA', 0, 'CA1923', '0' , '6', '0')," 1.用 wordpad(windows 中)或 gedit(linux 中)打开 csv 文件 2. 找到 ), 或等价模式并用空字符替换。【参考方案2】:通过 phpmyadmin 导入,尽管确保您拥有正确的列数,但如果值本身包含逗号,则会出现此错误消息。
在这种情况下,它应该使用以下选项成功导入..
格式:带有加载数据的 CSV 列终止于:, 用“”括起来的列 通过以下方式转义的列:\ 行终止:自动【讨论】:
使用CSV with LOAD DATA
为我解决了这个问题。谢谢。以上是关于在 phpMyAdmin 中导入/替换带有 CSV 的表时遇到问题:第 1 行的 CSV 输入中的列数无效的主要内容,如果未能解决你的问题,请参考以下文章
在 mysql 中导入 70MB 的 csv 文件大约需要 70 小时?
当我尝试在 C 面板 phpmyadmin 中导入 sql 文件时 - 指定的密钥太长;最大密钥长度为 767 字节 #1071
在 phpMyadmin 中导入大型 SQL 文件 [重复]