之前,我有一個相當大的鏈接到MediaWiki的數據庫,我想刪除所有沒有被某個日期編輯的頁面。刪除鏈接到MediaWiki頁面某一特定日期
有問題的維基百科是由一個切口,當我們第一次創建維基這是進口的,而且,因爲我們已經創建了自己的頁面負載。我們最近決定不再需要維基百科頁面,因此希望將它們從數據庫中刪除。
我們能想到的,做到這一點,最好的方法是去除尚未因爲原來的進口編輯的所有頁面 - 麻煩的是,我們不知道如何做到這一點。
任何人有任何想法?
之前,我有一個相當大的鏈接到MediaWiki的數據庫,我想刪除所有沒有被某個日期編輯的頁面。刪除鏈接到MediaWiki頁面某一特定日期
有問題的維基百科是由一個切口,當我們第一次創建維基這是進口的,而且,因爲我們已經創建了自己的頁面負載。我們最近決定不再需要維基百科頁面,因此希望將它們從數據庫中刪除。
我們能想到的,做到這一點,最好的方法是去除尚未因爲原來的進口編輯的所有頁面 - 麻煩的是,我們不知道如何做到這一點。
任何人有任何想法?
您可以通過運行SQL查詢像這樣得到的前(或後)給定的日期編輯的最後幾頁的清單:
SELECT page_id, page_namespace, page_title
FROM /*prefix*/page
WHERE page_touched < '20110101000000'
這列出了具有所有頁面的ID,命名編號和標題沒有被編輯自2011年初(時間戳格式爲'YYYYMMDDHHMMSS'
)。如果您在安裝鏈接到MediaWiki配置表名前綴,則需要更換/*prefix*/
以上吧。
在這一點上,有幾件事情你可以做:
約書亞C.勒納建議,你可以要保持(或者與Special:Export或maintenance/dumpBackup.php
),並重新export所有頁面將它們導入到一個新的數據庫中。
還有一個maintenance script名爲maintenance/deleteBatch.php
可用於刪除一堆頁面,就好像它們已被管理員以通常方式刪除一樣。
最後,如果您確定不想返回頁面,則可以用DELETE
替換上面的SQL查詢的第一行。我強烈建議在執行此操作之前先備份數據庫。這會在數據庫中留下一些孤立的修訂版本,但您可以使用富有想象力的維護腳本maintenance/deleteOrphanedRevisions.php
擺脫它們。
(與上述前兩種方法的小問題是,出口和批量刪除腳本都希望與命名空間的上市名的頁面,而SQL查詢返回的命名空間號,這並不難。轉換一個對方只是通過搜索和替換,但它確實增加了額外的步驟,該方法的過程中,如果你想刪除的頁面在主命名空間,這是不是一個問題:只需添加AND page_namespace = 0
到查詢並從輸出中刪除ID和名稱空間。)
它可能是簡單的生成自初始設置(與維基百科切)創建了自己的文章的列表,導出這些物品,然後將其重新導入到一個新初始化鏈接到MediaWiki數據庫。