我的任務是將安裝的Orchard CMS移至不同的服務器和域。所有內容(頁面內容,菜單結構,鏈接等)都存儲在MSSQL數據庫中。好處:將Orchard安裝的物理文件移動到新服務器時,數據庫將保持不變,無需遷移它。糟糕的是:網頁和菜單上散佈着大量絕對URL。搜索並替換mssql表中的部分字符串/子字符串
我已隔離/固定出現URL的表和字段,但我缺乏(MS)SQL經驗/知識來執行「搜索 - 替換」。所以我來這裏尋求幫助(我曾嘗試將表導出爲.sql文件,在文本編輯器中進行搜索替換,然後將.sql文件重新導入數據庫,但遇到了幾個語法錯誤......所以我需要這樣做「SQL方式」)。
舉個例子:
表Common_BodyPartRecord
具有包含HTML內容ntext
類型的字段Text
。我需要找到部分字符串/oldserver.com/foo/
的每個發生並用/newserver.org/bar/
替換它。在同一個表項中可能有多個模式發生。
(總共我有5種模式,將需要更換,所有的部分字符串/的URL,域/路徑字符串,等等)
我通常做前端的東西,來到這個任務的機會。我在使用MySQL的時候曾經使用過與PHP相關的東西,但是從來沒有經過過SQL的基本知識 - 如果你可以保持你的解釋或多或少對新手友好,這將是有幫助的。
SQL Server版本是SQL Server 9.0.4053
,我必須通過Microsoft SQL Server Management Studio 12
訪問數據庫的任何幫助,不勝感激!
非常感謝您的回答。我不熟悉cast的概念,MSDN鏈接似乎針對有經驗的用戶。你能否澄清一下,讓我更好地理解發生了什麼?這會轉換「文本」列的數據類型,從而有可能破壞CMS嗎?這會以什麼方式影響「Text」列中的HTML內容(因此它不再被解釋爲HTML)? – Konadi 2015-03-02 10:33:00
@Konadi我已經充實了我的答案。此更新的唯一影響是將'/oldserver.com/foo/'替換爲'/newserver.org/bar/'。它**不應該**破壞CMS,但總是做這樣的事情之前做一個備份:) – 2015-03-02 12:15:55
再次感謝您的幫助和解釋。我剛剛使用您提供的SQL查詢嘗試了一個簡單的子字符串替換,它似乎工作得很好。 (順便說一句,查詢結尾的LIKE部分中有太多撇號)。先生,你救了我的一天。 – Konadi 2015-03-04 16:35:00