2010-01-06 79 views
1

我最近試圖從一箇舊博客(SharePoint)導入一堆博客文章到我當前的博客(WordPress)。當導入完成後,許多令人討厭的<div>標籤和其他HTML使其成爲帖子的內容,這使我的網站呈現的方式變得糟糕。從數據庫文本字段中刪除文本

我能夠查看MySQL數據庫中的違規行,並想知道是否有辦法選擇性地刪除可能導致問題的HTML文本。我可能通過解析文本在C#中破解了這一點,但我想弄清楚如何才能做到這一點。

如果您希望看到全文樣本,說明這些文件在數據庫文本字段中存在的樣子, 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中的更新語句可以是不同的,我在爲在哪裏丟失開始有選擇地替換文本字段中的文本。我會使用SQL語句中的正則表達式來提供幫助嗎?我將如何對遠程數據庫執行語句?

回答

2

在導入之前清理帖子怎麼辦?似乎像使用本地文件一樣,您可以將其視爲文本文件,這將變得容易得多。然後,您可以在導入之前使用Perl或Python來解決您的問題。

這假定您仍然可以訪問在SharePoint中結束的數據。

+0

我喜歡你的想法。您可以將SharePoint博客保存爲一個巨大的RSS XML文件。我想我會嘗試用LINQ-to-XML和C#解析,看看我是否不能在文章中沒有所有垃圾的情況下重新保存文件。 – 2010-01-07 00:49:33

1

沒有使用您用來爲您的網站提供服務或最習慣使用的後端平臺,沒有簡單的方法做到這一點。我自己,我會用PHP或Perl來清理數據,這可能會很棘手。所以答案是,它可以完成,但是您必須使用某種編程/處理語言才能這樣做,MySQL本身將無法清理數據。

1

假設你決定像你在你的問題中說的那樣使用SQL,如果你有技巧用C#破解它,你應該能夠弄清楚如何創建一個在repeat/fetch中使用遊標的存儲過程循環來選擇行,用字符串函數來處理數據,以及更新來更新行。檢查了這一點:

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

+0

嗯...我可能沒有如此堅決使用SQL,因爲我原來是=) – 2010-01-06 23:23:21