我最近尝试将一堆博客文章从旧博客 (SharePoint) 导入到我当前的博客 (WordPress)。导入完成后,出现了很多讨厌的东西 <div> 标签和其他 HTML 出现在帖子的内容中,这破坏了我网站的渲染方式。

我能够查看 MySQL 数据库中的违规行,并想知道是否有一种方法可以有选择地删除可能导致问题的 HTML 文本。 我可能可以通过解析文本在 C# 中破解这个问题,但如果可以的话,我想弄清楚如何使用 SQL 来做到这一点。

如果您想查看其中一个文件在数据库文本字段中的样子的全文示例, 我将完整的示例文件上传到我的网站.

这是我想做的:

  • 消除 <![CDATA[<div><b>Body:</b> 从每个文件的开头
  • 删除每个文件末尾的元信息,可能如下所示:

    <div><b>Category:</b> SharePoint</div>
    <div><b>Published:</b> 11/12/2007 11:26 AM</div>
    ]]>
    
  • 删除每个 <div> 并关闭 </div> 标签,它可能有一个类属性,例如:

    <div class=ExternalClass6BE1B643F13346DF8EFC6E53ECF9043A>
    

    笔记:外部类末尾的十六进制字符串可以不同

我以前没有在 MySQL 中使用过 Update 语句,并且不知道从哪里开始有选择地替换文本字段中的文本。我可以在 SQL 语句中使用正则表达式来提供帮助吗?如何针对远程数据库执行语句?

有帮助吗?

解决方案

在导入帖子之前清理帖子怎么样?似乎使用可以视为文本文件的本地文件会容易得多。然后,您可以在导入之前根据自己的喜好使用 Perl 或 Python 来解决问题。

这假定您仍然可以访问 SharePoint 中的数据。

其他提示

如果不利用您用来为您的网站提供服务或最习惯的后端平台,就没有简单的方法可以做到这一点。我自己会使用 PHP 或 Perl 来清理数据,这充其量也可能很棘手。所以答案是,这是可以做到的,但是你必须使用某种类型的编程/处理语言来做到这一点,MySQL 本身无法清理数据。

假设您决心像您在问题中所说的那样使用 SQL,如果您有能力使用 C# 破解它,您应该能够弄清楚如何创建一个存储过程,该存储过程在重复/获取循环中使用游标来选择rows、用于处理数据的字符串函数以及用于更新行的更新。看一下这个:

http://dev.mysql.com/doc/refman/5.0/en/cursors.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top