Movatterモバイル変換


[0]ホーム

URL:


Jump to content
MediaWiki
Search

Manuel:Importer les dumps XML

From mediawiki.org
This page is atranslated version of the pageManual:Importing XML dumps and the translation is 97% complete.
Outdated translations are marked like this.
Languages:

Cette page décrit les méthodes permettant d'importer les dumps XML.Les vidages (dumps) XML contiennent le contenu d'un wiki (les pages du wiki avec toutes leurs révisions), sans les données liées au site.Un vidage XML ne crée pas une sauvegarde complète de la base de données du wiki, il ne contient pas les comptes des utilisateurs, ni les images, ni les journaux des modifications, etc.

La pageSpecial:Export de tout site MediaWiki, y compris l'ensemble des sites Wikimedia et Wikipedia, crée un fichier XML (le vidage du contenu).Voirmeta:Data dumps etManuel:DumpBackup.php.Les fichiers XML sont davantage expliqués surAide:Export.

Comment importer ?

Il existe plusieurs méthodes pour importer les dumps XML.

Utiliser Special:Import

Special:Import peut être employé par les utilisateurs de wiki avec les droitsimport (par défaut, ce sont les utilisateurs du groupesysop) pour importer un petit nombre de pages (une centaine devrait être possible).

Une tentative pour importer de longs vidages de cette manière pourrait conduire à un échec suite au temps d'exécution trop long ou à des problèmes de connexion.

  • VoirAide:Importer pour une description basique sur la manière dont fonctionne le processus d'importation.[1]

On vous demande de fournir un préfixe.Si vous avez exporté à partir de la Wikipedia en anglais par exemple, ce sera 'en'.Pour importer le XML vous devez avoir les droitsimport etimportupload.VoirManuel:Droits utilisateurs.

Téléverser de longs fichiers XML

Il est possible que les longs téléversements soient rejetés car ils dépassent la limite fixée pour PHP dans le fichierphp.ini.

; Taille maximale autorisée pour le téléversement des fichiers.upload_max_filesize=20M

Essayez de modifier ces quatres paramètres dansphp.ini :

; Taille maximale des données POST acceptées par PHP.post_max_size=20Mmax_execution_time=1000; Temps maximum d'exécution de chaque script, en secondesmax_input_time=2000; Temps maximum que chaque script peut consacrer à l'analyse des données demandées; Temps maximum par défaut autorisé pour les flux basés sur des ''sockets'' (en secondes)default_socket_timeout=2000

Utiliser importDump.php, si vous avez accès au shell

La méthode est recommandée pour un usage général mais reste lente avec des ensembles de données de grande taille.
Voir :Manuel:ImportDump.php, contient des indications sur l'utilisation avec de grands wiki.

Utiliser le script de maintenance importTextFiles.php

Version de MediaWiki :
1.23
Version de MediaWiki :
1.27

Si vous disposez de beaucoup de contenu converti à partir d'une autre source (comme plusieurs fichiers textuels formatés, du contenu d'un autre wiki, etc), il est possible que vous ayez plusieurs fichiers à importer dans votre wiki.Dans MediaWiki 1.27 et ultérieur, vous pouvez utiliser le script de maintenanceimportTextFiles.php.

Vous pouvez également utiliser le script de maintenanceedit.php à cet effet.

rebuildall.php

Pour de longs vidages XML, vous pouvez exécuterrebuildall.php, mais il prendrabeaucoup de temps car il doit analyser chacune des pages.Ceci n'est pas recommandé pour les grands ensembles de données.

Utiliser pywikibot, pagefromfile.py et Nokogiri

pywikibot est une collection d'outils écrits en Python qui automatisent le travail sur Wikipedia ou les autres sites MediaWiki.Une fois installé sur votre ordinateur, vous pouvez utiliser l'outil spécifiquepagefromfile.py qui vous permet de téléverser un fichier wiki sur les sites Wikipedia ou MediaWiki.Le fichier XML créé pardumpBackup.php peut être transformé en un fichier wiki adapté au traitement parpagefromfile.py en utilisant un simple programme Ruby similaire à ce qui suit (ici, le programme transformera tous les fichiers XML qui sont dans le répertoire actuel - ce qui est nécessaire si votre site MediaWiki est une famille) :

On Python

frompathlibimportPathfromlxmlimportetreeimportrefrompywikibotimportLink,Site""" The exported XML preserves local namespace names. To import into a project in another language, you need to convert them to canonical names. Otherwise the pages will be imported as originals without recognizing their namespace.XML contains namespace numbers, but mapping them can be problematic. Because they can differ between projects. For example, in ru.wikisource NS Page is number 104, while in uk.wikisource it is 252.To solve these, the Link() class from pywikibot is used.The Link() required the language code and family of project. XML does not contain these as separate values. Instead, they are in another format, like `enwikisource` or 'commonswiki', which needs to be parsed."""xml_folder='PATH_TO_XML_DUMP'forxml_fileinPath(xml_folder).glob('*.xml'):root=etree.parse(xml_file).getroot()ns={'':root.nsmap[None]}# xml namespace# Parsing language code and family of the projectdbname=root.find('.//siteinfo/dbname',ns).textm=re.search(r'^(\w+?)(wiki|wikisource|wikiquote|wikinews|wikibooks)$',dbname)ifm:site=Site(code=m.group(1),fam=m.group(2))elif'commons'indbname:site=Site('commons')elif'mediawikiwiki'indbname:site=Site('mediawiki')else:print("Site didn't recognized.")breakwiki=[]forpageinroot.findall('.//page',ns):title_source=page.find('title',ns).texttitle=Link(title_source,site).ns_title().replace(' ','_')revision_id=page.find('.//revision/id',ns).textprint(f'{title}, revision id:{revision_id}')text=page.find('.//revision/text',ns).textwiki.append("{{-start-}}\n'''%s'''\n%s\n{{-stop-}}"%(title,text))Path(f'out_{xml_file.stem}.wiki').write_text('\n'.join(wiki))

On Ruby

# -*- coding: utf-8 -*-# dumpxml2wiki.rbrequire'rubygems'require'nokogiri'# Ce programme dumpxml2wiki lit les fichiers xml MediaWiki fournis par dumpBackup.php# Le texte de chaque page est recherché avec xpath et son titre est ajouté sur la première ligne ainsi#Dir.glob("*.xml").eachdo|filename|input=Nokogiri::XML(File.new(filename),nil,'UTF-8')putsfilename.to_s# prints the name of each .xml fileFile.open("out_"+filename+".wiki",'w'){|f|input.xpath("//xmlns:text").each{|n|pptitle=n.parent.parent.at_css"title"# searching for the titletitle=pptitle.contentf.puts"\n{{-start-}}<!--'''"<<title.to_s<<"'''-->"<<n.content<<"\n{{-stop-}}"}}end

Par exemple voici un extrait du fichier de sortie d'un wiki suite à la commande 'ruby dumpxml2wiki.rb' (pagefromfile.py peut alors téléverser deux pages, un modèle et une une seconde page qui est une redirection) :

{{-start-}}<!--'''Template:Lang_translation_-pl'''--><includeonly>Tłumaczenie</includeonly>{{-stop-}}{{-start-}}#REDIRECT[[badania demograficzne]]<!--'''ilościowa demografia'''--><noinclude>[[Category:Termin wielojęzycznego słownika demograficznego (pierwsze wydanie)|ilościowa demografia]][[Category:Termin wielojęzycznego słownika demograficznego (pierwsze wydanie) (redirect)]][[Category:10]]</noinclude>{{-stop-}}

Le programme passe en revue chaque fichier XML, extrait chaque texte à l'intérieur des balises <text> </text> de chaque page, cherche le titre correspondant au parent et l'encadre d'une paire de commandes {{-start-}}<!--'''Title of the page'''--> {{-stop-}} utilisées par 'pagefromfile' pour créer ou mettr à jour une page.Le nom de la page se trouve dans un commentaire html et séparé par trois apostrophes sur la même première ligne du début.Veuillez noter que le nom de la page peut être écrit en Unicode.Il est quelques fois important que la page commence directement par la commande, comme pour un #REDIRECT; ainsi le commentaire qui donne le nom de la page doit êtreaprès la commande mais toujours sur la première ligne.

Notez que les fichiers de vidage xml produits pardumpBackup.php sont préfixés par un espace de noms :

<mediawikixmlns="http://www.mediawiki.org/xml/export-0.4/">

Pour accéder au nœud de texte à l'aide deNokogiri, vous devez préfixer votre chemin avec 'xmlns' :

input.xpath("//xmlns:text")

Nokogirist un analyseur HTML, XML, SAX, et Reader permettant de rechercher des documents via des sélecteurs XPath ou CSS3 et issu de la dernière génération des analyseurs XML utilisant Ruby.

Exemple d'utilisation de 'pagefromfile' pour téléverser le fichier textuel de sortie du wiki :

pythonpagefromfile.py-file:out_filename.wiki-summary:"Reason for changes"-lang:pl-putthrottle:01


Comment importer les journaux ?

L'export et l'import des journaux avec les scripts MediaWiki standard se révèle assez difficile; une alternative pour importer est le scriptpages_logging.py de l'outil WikiDAT commesuggéré par Felipe Ortega.

Résolution des problèmes

Fusionner les historiques, conflits de versions, modifier les résumés et autres difficultés

Lors de l'importation d'une page avec des informations d'historique, si le nom d'utilisateur existe déjà dans le projet cible, modifiez le nom d'utilisateur dans le fichier XML pour éviter toute confusion. Si le nom d'utilisateur est nouveau pour le projet cible, les contributions seront toujours disponibles, mais aucun compte ne sera créé automatiquement.

Lorsqu'une page est référencée via un lien ou une URL, les noms génériques de l'espace de noms sont convertis automatiquement. Si le préfixe n'est pas un nom d'espace de noms reconnu, la page sera par défaut dans l'espace de noms principal. Cependant, des préfixes commemw: pourraient être ignorés sur les projets qui les utilisent pour les liens interwiki. Dans de tels cas, il peut être bénéfique de modifier le préfixe enProject: dans le fichier XML avant l'importation.

Si une page portant le même nom existe déjà, les modifications importées combineront les historiques.L'ajout d'une révision entre deux versions existantes peut faire apparaître les changements de l'utilisateur suivant comme différents.Pour voir le changement réel, comparez les deux versions originales, et non celle insérée.Donc, insérez seulement des modifications pour reconstruire correctement l'historique de la page.

Une révision ne sera pas importée s'il existe déjà une révision à la même date et heure.Cela se produit généralement si elle a déjà été importée avant, soit dans le même wiki, un wiki précédent, ou les deux, ou éventuellement d'un troisième site.

Un résumé de modification peut faire référence ou pointer vers une autre page, ce qui peut être déroutant si la page à laquelle il est lié n'a pas été importée, même si la page de référence l'a été.

Le résumé de modification n'indique pas automatiquement si la page a été importée, mais dans le cas d'un import de téléversement, vous pouvez ajouter ces informations aux résumés de modification dans le fichier XML avant l'importation. Cela peut aider à éviter une confusion. Lors de la modification du fichier XML avec trouver / remplacer, gardez à l'esprit que l'ajout de texte aux résumés de modification nécessite la différenciation entre les modifications avec et sans résumé de modification. Si le fichier XML contient plusieurs balises de commentaires, seule la dernière série sera appliquée.

Liens interwikis

Si vous recevez le messageInterwiki le problème est que certaines pages à importer ont un préfixe qui est utilisé pour les liensInterwiki.Par exemple, celles avec un préfixe 'Meta:' vont entrer en conflit avec le préfixe interwikimeta: qui par défaut se pointe vers https://meta.wikimedia.org.

Choisissez les actions à faire parmi celles décrites ci-après.

  • Supprimez le préfixe de la table deinterwiki. Cela préservera le titre des pages, mais empêchera les liens interwiki en utilsant ce préfixe.
    Exemple : vous conserverez les titres de page « Meta:Blah blah » mais ne pourrez pas utiliser le préfixemeta: pour aller sur meta.wikimedia.org (bien que cela soit possible grâce à un préfixe différent).
    Comment le faire : avant d'importer le vidage, exécutez la requêteDELETE FROM interwiki WHERE iw_prefix='prefix' (note : ne pas inclure les deux-points dans leprefixe). Alternativement, si vous avezactivé la modification de la table interwiki, vous pouvez simplement aller surSpecial:Interwiki et cliquer sur le lien de suppression (Delete) à la droite de la ligne où se trouve le préfixe.
  • Remplacer le préfixe non souhaité dans le fichier XML parProject: avant l'import. Ceci va conserver la fonctionnalité du préfixe pour les interliens, mais remplacera le préfixe dans le titre des pages par le nom du wiki dans lequel elles sont importées, ce qui peut être douloureux à faire avec de longs vidages.
    Exemple : remplacer tous les 'Meta:' par 'Project:' dans le fichier XML. MediaWiki remplacera donc 'Project:' par le nom de votre wiki durant l'importation.

Voir aussi

Références

  1. VoirManuel:Manipuler le fichier d'import XML en CSharp à propos d'un exemple de code C# qui manipule un fichier d'import XML.
Retrieved from "https://www.mediawiki.org/w/index.php?title=Manual:Importing_XML_dumps/fr&oldid=7701191"
Category:

[8]ページ先頭

©2009-2025 Movatter.jp