phpmyadmin(CSV)中的MySQL导入在引号上扼流圈

时间:2009-06-26 09:19:34

标签: php csv import phpmyadmin

我正尝试通过 phpMyAdmin .csv文件导入MySQL表。

.csv文件由管道分隔,格式如下:

data|d'ata|d'a"ta|dat"a|
data|"da"ta|data|da't'a|
dat'a|data|da"ta"|da'ta|

数据包含引号。我无法控制收到数据的格式 - 它是由第三方生成的。

当有 |时出现问题然后是双引号。我总是得到“第N行的CSV输入中的无效字段计数”错误。

我从导入页面上传文件,使用Latin1,CSV,以|结尾,以“。”分隔。

我想更改“括号”字符,但我不断获取“CSV导入的无效参数:”所包含的字段。我尝试了各种角色但没有成功。

如何告诉MySQL在phpMyAdmin中接受这种格式?

设置这些表是编写程序的第一步,该程序将使用上传的gzipped .csv文件来维护电子商务站点的目录。

5 个答案:

答案 0 :(得分:1)

我找到了一个有效的黑客 - 我使用$作为“封闭”字符,一切都很好。由于这是针对欧洲网站的,我知道他们永远不会在表格内容中使用它。

答案 1 :(得分:1)

过去几个小时我一直有类似的问题,我终于得到了一个重要的工作,所以我会分享我的解决方案,即使它可能对原始海报没有帮助。

简短版本:
1.)如果是Excel文件,则保存为ODS(打开文档电子表格)格式。 1a。)如果文件是某种带分隔符的文本格式(如原版海报所示),则打开Excel,一旦在Excel中使用File / Open打开文件。在那里,您将能够选择适当的分隔符来查看文件。确保文件看起来没问题,然后保存为ODS格式(并关闭文件)。

2.。)在OpenOffice Calc中打开文件(从Oracle / Sun免费下载)。 2a。)按Ctrl-F打开“查找”对话框。单击“更多选项”并确保未选中“仅限当前选择”。 2b。)搜索双引号。如果您的文件中没有,则可以跳过步骤4和5 3.)另存为 - >文字CSV。选择UTF-8格式的选项(按“u”3次快速到达那里),选择“;” (半冒号)作为分隔符,并为文本选择双引号。 4.)如果在步骤2b中文件中找到任何双引号,则继续,否则只需使用phpMyAdmin将文件导入为CSV(参见步骤6)。它应该工作。 5a。)在Word或任何其他文本编辑器中打开,您可以在其中执行查找 - >全部替换。
5b。)通过搜索“”找到连续三个双引号的所有实例(如果你找到任何,你甚至可能想连续搜索4,5,6等,直到你出现空白)。 5c。)用csv中其他地方找不到的占位符替换“”“。我用'abcdefg'替换它们。 5d。)查找 - >用\“(正斜杠和双引号)替换”“(连续两个双引号)的所有实例。 5e。)查找 - >用\“”替换abcdefg的所有实例(或从步骤5c中选择的占位符)。 5c和此步骤确保在文本分隔引用之前的字段末尾出现的任何引号都被正确“转义”。 5f。)最后,保存文件,保留UTF-8(或导入所需的任何格式)。 6.a)在phpMyAdmin中,单击“导入”选项卡,单击“选择文件”按钮,然后选择刚刚保存的文件。 6b。)在“导入文件的格式”下,应选择CSV。如果列名在第一行,请确保选中该复选框。最重要的是,'字段终止'应该设置为; (半冒号),'由'括起来的字段应设置为“(双引号),并且'转义的字段'应设置为\(正斜杠)。您可以按照步骤3在文件中设置它,如果按照步骤5a-5f进行必要。

7。)点击“开始”,祈祷你不要再浪费一个小时。

现在短版已经证明了这一点,我将跳过长版本。

我只想说,通过phpmyadmin导入似乎存在两个主要问题。 1.)存在某种内存问题,导致无法导入大型Excel和ODS文件(有多大?尚不确定)。 2.)OpenOffice和Excel似乎都没有以与phpmyadmin兼容的方式保存他们的csv文件。他们希望用双引号来避免双引号。 phpMyAdmin想要使用其他东西进行双引号转义,例如正斜杠。

第一个问题有望在phpmyadmin的更新中修复(和/或Excel导入附加组件'PHPExcel')。 如果有一种简单的方法来更改保存为CSV的Excel或ODS文件的转义字符,或者如果phpMyAdmin可以与它们的格式兼容(这实际上应该非常简单。只需让它执行相同的操作),可以修复第二个问题。我们手动执行的find-replace动作可以避免双引号问题。)

我希望这对某人有所帮助,因为我花了3-4个小时发现这个解决方案,另一个小时在这里写。我希望它不会太久,但我希望能帮助所有专业水平的人从零到任何地方(可能大约0.1)。

答案 2 :(得分:0)

你可以通过在每个'右边?

之前添加\来修改csv文件

答案 3 :(得分:0)

您是否尝试将“包围的字段”和“字段转义为”的框置空?我没有使用phpMyAdmin,但谷歌建议others have had success with this method

答案 4 :(得分:0)

您可能会考虑编写自己的 LOAD DATA INFILE 查询,无论如何您似乎都需要一个查询,因为此过程在某些时候将成为应用程序的一部分。