之前,我有一个相当大的链接到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数据库。