【问题标题】:PHP 5.3 fgetcsv \"PHP 5.3 fgetcsv \"
【发布时间】:2010-10-27 17:35:31
【问题描述】:

我正在将一个 CSV 从 DB2 导入 MySQL,一切顺利,直到我在包含加密数据的列中遇到 50 万行 \"。

这是一个例子:

100,"foo","bar","µ┬;¬µ┬;→ºµ┬;Öì\"
101,"foo","bar","$⌠ù¶∙$∙µ┬µ┬;→ºµ┬;Öì"

当 fgetcsv 解析它时,它会转义最后一个双引号并包含下一行,就好像它是该字段的一部分一样。

我看到一些错误报告,他们在 PHP 5.3 中为 fgetcsv 添加了转义参数。

DB2 使用什么来逃避?只是“?

【问题讨论】:

  • 实际上我不能将转义字符设置为空字符串,因为它必须是单个字符。
  • 也许使用chr(0) 作为转义字符?
  • 优秀的建议 Alin,我认为这也可以。我正在尝试使用 " 作为转义字符进行另一个导入,到目前为止一切顺利。

标签: php fgetcsv


【解决方案1】:

fgetcsv 手册页上的 cmets 看来,这是一个相当普遍的问题,没有真正好的解决方法。然而,还有一些替代功能,人们很乐意在页面上发布它们可能会满足您的需求。

这是其中之一的链接:http://us3.php.net/manual/en/function.fgetcsv.php#98800

【讨论】:

  • 是的,我在来这里之前已经尝试过,这个文件还包含二进制数据,当我使用该函数时,无论出于何种原因,它似乎都会中断。此外,它会引发很多通知,因为它没有在追加之前设置字段,只是很乱。
  • 老实说,我不确定您是否真的想使用 PHP 作为数据库迁移工具。您可能想四处寻找真正的迁移工具包。
  • 很公平,尤其是对于不熟悉的 dbms。刚刚意识到这些时间戳有微时间。
  • fgetcsv() 是一场灾难。不幸的是,您提到的函数 cmets 中的建议对我不起作用。不知道为什么会有一些不稳定的东西。在 Rails 上从来没有这些问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
  • 2016-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
相关资源
最近更新 更多