【问题标题】:How can I automatically escape quotes in content when exporting from MySql to an sql file?从 MySql 导出到 sql 文件时,如何自动转义内容中的引号?
【发布时间】:2011-04-15 02:28:58
【问题描述】:

我们有一个 Joomla 网站,我们想将其复制到另一个主机网站。到目前为止,除了数据库之外的所有内容都已复制。我们遇到的问题如下:

将旧网站的数据库信息导出到 .sql 文件并尝试将其导入新主机上的空数据库后,网站上的文本(内容)似乎在各个点中断。我发现是因为文中的单引号',比如"You're welcome"。而不是这两个词,它只说You。我知道引号会破坏 SQL 查询(就像在 SQL 注入中一样),但是我将如何正确导入数据库呢?还是我必须先更改导出方式?

我们正在使用 phpMyAdmin 导出(和导入)我们的信息。

【问题讨论】:

  • 不应该那样做。 After exporting the database information from our old website into an .sql file你是怎么导出的?
  • 我们使用 phpMyAdmin 来导出(和导入)我们的信息。 (添加到原帖)
  • 我假设您在远程服务器上没有命令行访问权限来运行mysqldump from?
  • 无论如何,phpMyAdmin 不应该这样做。你是不是100%确定导出的数据已经有这个问题了,以后就没事了?你能检查转储文件来确定吗?
  • 我已经检查了我导出的 .sql 文件,这里是它的外观示例(以及我认为它失败的地方)。我将它缩短了一点,并删除了多余的 HTML 等。如您所见,在内容的开头 (you're) 有一个单引号,它在该单引号上停止。至少,这就是我的猜测,这就是它在我们网站上的外观。 (17, 'Welcome', 'home', '', 'Dear Visitor, You’re more than welcome on our web site.'

标签: mysql database import joomla quotes


【解决方案1】:

我意识到这是一篇旧帖子,但也有一个相当简单的查找/替换解决方案。

如果您使用支持正则表达式查找/替换的文本编辑器(我使用 Sublime Text 2),您可以快速将某些内容放在一起以匹配模式。这可能不适用于所有数据,但在我遇到此问题的情况下它对我有用。

您需要搜索:

(\w)'(\w)

并替换为:

$1\\'$2

这将找到任何带有单引号的单词字符和旁边的另一个单词字符,并替换为转义版本。在大多数情况下,我处理的问题是带有英文缩写的文本,所以这适用于这种情况。它可能不适用于您的情况。

【讨论】:

  • 感谢您的旧帖。我刚刚在 phpmyadmin 备份中遇到了这个问题。
【解决方案2】:

我也遇到过同样的情况,我觉得是phpMyadmin导出功能的bug。由于您无法进行简单的搜索和替换以转义引号,因此我知道没有清理转储的好方法。

但是有一个非常简单的解决方案。当您需要移动站点时,请使用 JoomlaPack(现在称为 Akeeba Backup)。它将整个站点和数据库打包成一个漂亮整洁的 ZIP 文件,并包含一个快速安装程序。移动整个网站并启动并运行应该不会超过几分钟。

http://extensions.joomla.org/extensions/access-a-security/site-security/backup/1606

【讨论】:

  • 感谢您的回复!不过,有一个简短的问题:我可以只导出数据库吗?我对这些文件不是特别感兴趣,因为它们已经被转移了。
  • 如果您不想获取所有文件,您可以控制要备份的内容。我从来没有这样做过,但我看不出它为什么不起作用。
  • 使用您推荐给我的 Joomla 组件,我们成功地导出(和导入)数据库。非常感谢您的帮助。也是非常有用的组件。
  • 我也面临同样的问题,但不是 joomla 数据库。在这我该如何解决这个问题?
猜你喜欢
  • 1970-01-01
  • 2018-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
相关资源
最近更新 更多