【问题标题】:Mysqldump -x option to escape XML charactersmysqldump -x 转义 XML 字符的选项
【发布时间】:2011-07-21 21:20:11
【问题描述】:

我正在使用 mysqldump -x 将 MySQL 数据库导出为 XML。我的许多字段都包含撇号和其他字符,这些字符会混淆 mysqldump-x-restore 的 XSLT 样式表。

仅仅遍历文件并转义 XML 有问题的字符是不够的,因为这也会替换每个合法的 XML 括号和引号。 mysqldump 上是否有选项可以对列数据进行 XML 转义?

【问题讨论】:

  • 我的mysqldump (mysqldump Ver 10.13 Distrib 5.1.57, for debian-linux-gnu (i486)), 仅使用" 作为xml 属性,并将字段中的属性正确编码为@ --xml 输出上的 987654324@(就像 >< 一样。它只留下单引号 ',如果那个 xsl 与那个有问题,那是你唯一需要改变的,它可以在不危及 XML 的情况下完成。
  • 我使用的是 10.13 / 5.1.49。这很奇怪,我发誓我已经摆脱了所有的撇号,但是这个 XSLT 仍然坏掉了……猜猜是时候提出一个错误了。如果您想对此做出回答,我会将其标记为正确的。

标签: mysql xml escaping mysqldump


【解决方案1】:

如果只有几个特殊字符会导致麻烦,您可以在常规 mysql 客户端中使用执行 (-e) 选项结合 REPLACE 函数获得与 mysqldump -x 相同的结果。

转义 & 字符的示例:

mysql --xml -uusername -p -Ddatabasename -e"SELECT REPLACE(field1, '&', ' ') AS field1 FROM ymse.dbh_inst" > /path/file.xml

如果您必须转义多个特殊字符,此方法将导致难看的嵌套 REPLACE 语句,因为 MySQL 不支持正则表达式替换。

【讨论】:

    猜你喜欢
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    相关资源
    最近更新 更多