从数据库文本字段中删除文本

时间:2010-01-06 22:23:44

标签: sql mysql regex parsing html-parsing

我最近尝试将旧博客(SharePoint)中的大量博客帖子导入到我当前的博客(WordPress)。导入完成后,很多讨厌的<div>标签和其他HTML都会进入帖子内容,这搞砸了我的网站渲染方式。

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

如果您想查看数据库文本字段 I uploaded a full sample file to my web site中存在的其中一个文件的完整文本示例。

我希望这样做:

  • 从每个文件的开头删除<![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>
    

    注意:ExternalClass末尾的十六进制字符串可以不同

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

3 个答案:

答案 0 :(得分:2)

在导入之前清理帖子怎么样?看起来像使用本地文件,您可以将其视为文本文件将更容易。然后你可以使用Perl或Python在导入之前根据自己的喜好来解决问题。

这假设您仍然可以访问SharePoint中已结束的数据。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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