Wikipedia:Database download

From Wikipedia, the free encyclopedia.

Jump to: navigation, search

Contents

Where do I get...

  • Dumps from any Wikimedia Foundation project: http://download.wikimedia.org/
  • English Wikipedia dumps: http://download.wikimedia.org/wikipedia/en
    • pages_current.xml.gz - Current revisions only, all pages
    • pages_full.xml.gz - All revisions, all pages
    • pages_articles.xml.gz - Current revisions only, no talk or user pages
    • all_titles_in_ns0.gz - Article titles only
    • Caution: This site does not (yet) have an entirely human-friendly interface. Dumps in progress are posted live, and data is continually added to the corresponding compressed files. Use the symlinks at the bottom (without dates in the filename), or check the file backup.log in the same directory to see which date is safe to download. (Look for the last line that says "SUCCESS: done.") Dumps do take several days to complete, and sometimes fail and have to be re-started, so relying on timestamps can be misleading.
  • Wiki front-end software: Wikipedia:MediaWiki.
  • Database backend software: You want to download MySQL.
  • Image dumps: See below.

Regular database dumps

Database dumps are no longer prepared in SQL format; they now occur only in XML (for article contents). If you need to load a MySQL relational database with a SQL dump, you will just need to use an import script. For example, using the PHP script included with the MediaWiki distribution, to import a gzipped database dump, you might run the following command:

gzip -dc dump.xml.gz | php maintenance/importDump.php

(You may need to get the latest CVS version of MediaWiki to get importDump.php.)

An alternative tool for importing dumps is mwdumper. It is written in Java and may be considerably faster than importDump. Available for download at http://download.wikimedia.org/tools/

As of September 2005, a compressed full database dump (text only), including old page versions, is about 40GB. The compressed dump with only current revisions is about 1.2GB (900MB excluding talk and user pages). It takes about four and a half days for the English Wikipedia dump to be processed for posting, so keep in mind the data is slightly out of date even before you download it. On a 56 kbit/s standard dial-up modem connection, 40GB will take approximately 120 days to download. Some SQL tables do get posted for download when there's an XML dump; check the timestamps in the download directory.

The character encoding is UTF-8.

Database dumps are not on an automatic schedule; they are performed when a developer has the time, (and hopefully the site is not overloaded). The backup scripts underwent significant changes between July and September 2005, and are now more reliable. Hopefully this will result in more frequent dumps. In the past, they have been produced anywhere from twice a week to once a month (or less).

Images and uploaded files

Unlike the article text, many images are not released under GFDL or the public domain. These images are owned by external parties who may not have consented to their use in Wikipedia. Wikipedia uses such images under the doctrine of fair use under United States law. Use of such images outside the context of Wikipedia or similar works may be illegal. Also, many images legally require a credit or other attached copyright information, and this copyright information is contained within the text dumps available from download.wikimedia.org. Some images may be restricted to non-commercial use, or may even be licensed exclusively to Wikipedia. Hence, download these images at your own risk. [1]

As of June 2005, the image dump for the English Wikipedia was about 17GB.

A new image dump will be posted in September, 2005, after the text dumps have been completed for all projects.

If you still want to download images, you can get them at:

Dealing with large files

You may run into problems downloading files of unusual size. Some older operating systems, file systems, and web clients have a hard limit of 2GB on file size. If you seem to be hitting this limit, try using wget version 1.10 or greater, cURL version 7.11.1-1 or greater, or a recent version of lynx (using -dump). Users have experienced problems with Mozilla, and Firefox, but recent versions are more likely to be fixed.

It is recommended that you check the MD5 sums (provided in a file in the download directory, to make sure your download was complete and accurate. You can check this by running the "md5sum" command on the files you downloaded. Given how large the files are, this may take some time to calculate. Due to the technical details of how files are stored, file sizes may be reported differently on different filesystems, and so are not necessarily reliable. Also, you may have experienced corruption during the download, though this is unlikely.

According to this page:

  • FAT16 (MS-DOS version 6, Windows 3.1, and earlier) supports files up to 2GB.
  • FAT32/VFAT (Windows 95, 98, 98SE, and ME) supports files up to 4GB.
  • An old FAT16 filesystem under Windows ME or Windows NT can support up to 4GB.
  • NTFS (Windows NT 3.51+, 2000, XP, and Server 2003) supports up to 16 exabytes.

If you are running a Linux kernel version 2.4 or greater, ext2 and ext3 filesystems can handle 16GB files and larger, depending on your block size. See http://www.suse.de/~aj/linux_lfs.html for more information.

What are dumps used for?

Database dumps are useful for making Wikipedia:Maintenance reports without burdening site resources. They are also used for making Wikipedia:Mirrors and forks, and can even be used for offline reading (presumably in combination with MySQL and MediaWiki software, or some other interpreter). They also serve as a form of off-site backup, in no particularly organized way.

Why not just retrieve data from wikipedia.org at runtime?

Suppose you are building a piece of software that at certain points displays information that came from wikipedia. If you want your program to display the information in a different way than can be seen in the live version, you'll probably need the wikicode that is used to enter it, instead of the finished HTML.

Also if you want to get all of the data, you'll probably want to transfer it in the most efficient way that's possible. The wikipedia.org servers need to do quite a bit of work to convert the wikicode into html. That's time consuming both for you and for the wikipedia.org servers, so simply spidering all pages is not the way to go.

To access any article in XML, one at a time, access:

http://en.wikipedia.org/wiki/Special:Export/Title_of_the_article

Read more about this at Special:Export.

To access any article via an RSS Feed, one at a time, access:

http://www.blinkbits.com/rssfeeds/wikipedia.php?w=Title_of_the_article

Read more about this at User:Blinklmc.

Please be aware that live mirrors of Wikipedia that are dynamically loaded from the Wikimedia servers are prohibited. Please see Wikipedia:Mirrors and forks.

Please do not use a web crawler

Please do not use a web crawler to download large numbers of articles. Aggressive crawling of the server can cause a dramatic slow-down of Wikipedia. Our robots.txt restricts bots to one page per second and blocks many ill-behaved bots.

Sample blocked crawler email

IP address nnn.nnn.nnn.nnn was retrieving up to 50 pages per second from wikipedia.org addresses. Robots.txt has a rate limit of one per second set using the Crawl-delay setting. Please respect that setting. If you must exceed it a little, do so only during the least busy times shown in our site load graphs at http://wikimedia.org/stats/live/org.wikimedia.all.squid.requests-hits.html . It's worth noting that to crawl the whole site at one hit per second will take several weeks. The originating IP is now blocked or will be shortly. Please contact us if you want it unblocked. Please don't try to circumvent it - we'll just block your whole IP range.
If you want information on how to get our content more efficiently, we offer a variety of methods, including weekly database dumps which you can load into MySQL and crawl locally at any rate you find convenient. Tools are also available which will do that for you as often as you like once you have the infrastructure in place. More details are available at http://en.wikipedia.org/wiki/Wikipedia:Database_download.
Instead of an email reply you may prefer to visit #mediawiki at irc.freenode.net to discuss your options with our team.

Doing SQL queries on the current database dump

You can do SQL queries on the current database dump (as a replacement for the disabled Special:Asksql page) at wikisign.org. For more information about this service, see de:Benutzer:Filzstift/wikisign.org (in German only).

Dealing with compressed files

Approximate file sizes are given for the compressed dumps; uncompressed they'll be significantly larger.

Some older archives are compressed with gzip, which is compatible with PKZIP (the most common Windows format). Newer archives are available in both bzip2 and 7zip compressed formats.

Windows users may not have a bzip2 decompressor on hand; a command-line Windows version of bzip2 (from here) is available for free under a BSD license.

The LGPL'd GUI file archiver, 7-zip [2], is also able to open bz2 compressed files, and is available for free.

MacOS X ships with the command-line bzip2 tool and StuffIt Expander, a graphical decompressor.

Please note that older versions of bzip2 may not be able to handle files larger than 2GB, so make sure you have the latest version if you experience any problems.

Database schema

SQL schema

See also: m:Database_layout

The database schema is explained in [3]. The cur tables contain the current revisions of all pages; the old tables contain the prior edit history.

XML schema

The XML schema for each dump is defined at the top of the file.

Help parsing dumps for use in scripts

Help importing dumps into MySQL

See:

Importing sections of a dump

This section is out of date.

The following Perl script is a parser for extracting the Help sections from the SQL dump:

s/^INSERT INTO cur VALUES //gi;
s/\n// if (($j++ % 2) == 0);
s/(\'\d+\',\'\d+\'\)),(\(\d+,\d+,)/$1\;\n$2/gs;
foreach (split /\n/) {
   next unless (/^\(\d+,12,\'/);
   s/^\(\d+,\d+,/INSERT INTO cur \(cur_namespace,cur_title,cur_text,cur_comment,cur_user,
   cur_user_text,cur_timestamp,cur_restrictions,cur_counter,cur_is_redirect,cur_minor_edit,
   cur_is_new,cur_random,cur_touched,inverse_timestamp\) VALUES \(12,/;
   s/\n\s+//g;
   s/$/\n/;
   print;
}

NOTE: Using the current meta.special dump (as at 2005-05-16) the order of the fields in the cur table has changed. inverse_timestamp now comes BEFORE cur_touched. This may cause Windows users no end of grief because all of a sudden your MediaWiki starts sprouting PHP errors about dates that are negative or occur before 1 January 1970 being passed to gmdate and gmmktime functions in GlobalFunctions.php. The reason is that the fields are swapped around and so there is rubbish data in these two fields. Maybe the Unix versions of these functions are smarter or do not cause PHP to spit a Warning message into the HTML script output, or else people have php.ini configured to not display these.

In other words, check that the field order in the script aligns with those in the dump. Better still, we should look at changing the script to retain whatever field order the dump uses 8-)

You can run the script and get a resulting help.sql file with this command:

bzip2 -dc <Date>_cur_table.sql.bz2 | perl -n <Script Name> > help.sql

The script can be easily modified to acquire any section you need with a few minor changes. Currently, it is set to get all records from namespace 12, the Help namespace. You can change the two 12's to grab a different namespace, or slightly change a couple of regular expressions to get, say, all articles that begin with Q:

   next unless (/^\(\d+,\d+,\'[qQ]/);
   s/^\(\d+,/INSERT INTO cur \(cur_namespace,cur_title,cur_text,cur_comment,cur_user,
   cur_user_text,cur_timestamp,cur_restrictions,cur_counter,cur_is_redirect,cur_minor_edit,
   cur_is_new,cur_random,cur_touched,inverse_timestamp\) VALUES \(/;

Or you can use more more generic version of this script from User:Msm/extract.pl.

NOTE: While this sounds really straightforward as a way to grab the Help namespace (#12) for use on your newly implemented MediaWiki site, you need more than just that. You also need the Template namespace (# 10) since many of the Help: pages rely on templates in some form or another. Of course, you then end up with hundreds of templates that are NOT used by the Help: pages too. Has anyone got a better idea for a script to do this ? Armistej

Static HTML tree dumps for mirroring or CD distribution

MediaWiki 1.5 includes routines to dump a wiki to HTML, rendering the HTML with the same parser used on a live wiki.

Terodump is an alpha quality wikipedia to static html dumper, made from wikipedia code. Static html dump (beta quality) wikipedia-terodump-0.1.tar.bz. This dump is made of a database 2003. - User:Tero

Wiki2static (site down as of October 2005) is an experimental program set up by User:Alfio to generate html dumps, inclusive of images, search function and alphabetical index. At the linked site experimental dumps and the script itself can be downloaded. As an example it was used to generate these copies of English WikiPedia 24 April 04 Simple WikiPedia 1 May 04(old database) format and English WikiPedia 24 July 04Simple WikiPedia 24 July 04 WikiPedia Francais 27 Juillet 2004 (new format). BozMo uses a version to generate periodic static copies at fixed reference.

If you want to draft a traditional website in Mediawiki and dump it to HTML format, you might want to try mw2html by User:Connelly.

If you'd like to help develop dump-to-static HTML tools, please drop us a note on the developers' mailing list.

See also:

Dynamic HTML generation from a local XML data-base file

Instead of converting a data-base file to many pieces of static HTML, one can also use a dynamic HTML generator. Browsing a wiki page is just like browsing a Wiki site, but the content is fetched and converted from a local dump file upon request from the browser.

WikiFilter is such a program, and it allows you to browse over 100 dump files without visiting a Wiki site.

Rsync

This section is out of date.

You can use rsync to download the database. For example, this command will download the current English database:

rsync rsync://download.wikimedia.org/dumps/wikipedia/en/cur_table.sql.bz2 . --partial --progress

The "--partial" switch prevents rsync from deleting the file in the event the download is interrupted. You may then issue the very same command again to resume the download. The "--progress" switch will show the download progress; for less verbose output, do not use this switch.

The rsync utility is designed to synchronize files in a manner such that only the differences between the files are transferred. This provides a considerable performance enhancement, especially when synchronizing large files that have relatively few changes. However, if a file is compressed or encrypted, rsync will not perform well; in fact, it may perform worse than downloading a fresh copy of the file. Many of the database files are only available compressed. Therefore, there is little, if anything, to be gained by attempting to use rsync as a means of expediting an update of an older SQL dump. If the SQL dumps were available uncompressed, this process should work extremely well, especially if rsync is invoked with the on-the-fly compression switch (-z). It is uncertain as to whether uncompressed database dumps will become available. However, rsync does remain a useful and expedient tool for resuming downloads that have been interrupted, repairing downloads that have become corrupted, or updating any files that are not compressed (i.e. upload.tar). For more information, see rsync.

Technical notes

  • There is some discussion about a modified gzip that can improve rsync performance. This patch to gzip resets the output stream at fixed intervals. This results in fixed-size blocks of compressed data, which are friendlier to rsync. Bzip2 is designed from the start to create blocks of compressed data, and works well with rsync. Since bzip2’s compression ratios are almost always better than gzip’s, there is no reason to switch.
  • Technically speaking, upload.tar is compressed, in the sense that it mostly contains compressed files such as images (which is why it should not be compressed otherwise). However, usually the files themselves do not change. The addition, removal, or reordering of static files in an uncompressed tarball should still yield excellent rsync performance, regardless of the content of those files.

See also

Personal tools