2012-01-12 76 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数据库。