2012-01-12 28 views
1

之前,我有一個相當大的鏈接到MediaWiki的數據庫,我想刪除所有沒有被某個日期編輯的頁面。刪除鏈接到MediaWiki頁面某一特定日期

有問題的維基百科是由一個切口,當我們第一次創建維基這是進口的,而且,因爲我們已經創建了自己的頁面負載。我們最近決定不再需要維基百科頁面,因此希望將它們從數據庫中刪除。

我們能想到的,做到這一點,最好的方法是去除尚未因爲原來的進口編輯的所有頁面 - 麻煩的是,我們不知道如何做到這一點。

任何人有任何想法?

回答

2

您可以通過運行SQL查詢像這樣得到的前(或後)給定的日期編輯的最後幾頁的清單:

SELECT page_id, page_namespace, page_title 
FROM /*prefix*/page 
WHERE page_touched < '20110101000000' 

這列出了具有所有頁面的ID,命名編號和標題沒有被編輯自2011年初(時間戳格式爲'YYYYMMDDHHMMSS')。如果您在安裝鏈接到MediaWiki配置表名前綴,則需要更換/*prefix*/以上吧。

在這一點上,有幾件事情你可以做:

  • 約書亞C.勒納建議,你可以要保持(或者與Special:Exportmaintenance/dumpBackup.php),並重新export所有頁面將它們導入到一個新的數據庫中。

  • 還有一個maintenance script名爲maintenance/deleteBatch.php可用於刪除一堆頁面,就好像它們已被管理員以通常方式刪除一樣。

  • 最後,如果您確定不想返回頁面,則可以用DELETE替換上面的SQL查詢的第一行。我強烈建議在執行此操作之前先備份數據庫。這會在數據庫中留下一些孤立的修訂版本,但您可以使用富有想象力的維護腳本maintenance/deleteOrphanedRevisions.php擺脫它們。

(與上述前兩種方法的小問題是,出口和批量刪除腳本都希望與命名空間的上市的頁面,而SQL查詢返回的命名空間,這並不難。轉換一個對方只是通過搜索和替換,但它確實增加了額外的步驟,該方法的過程中,如果你想刪除的頁面在主命名空間,這是不是一個問題:只需添加AND page_namespace = 0到查詢並從輸出中刪除ID和名稱空間。)

2

它可能是簡單的生成自初始設置(與維基百科切)創建了自己的文章的列表,導出這些物品,然後將其重新導入到一個新初始化鏈接到MediaWiki數據庫。

相關問題