Extension:Data Transfer
![]() État de la version : stable |
|
---|---|
Implémentation | Page spéciale |
Description | Permet d'importer et d'exporter le contenu des pages d'un wiki sous forme XML et CSV, en utilisant les appels de modèle pour définir les champs |
Auteur(s) | Yaron Koren <yaron57@gmail.com> |
Dernière version | 1.7 (avril 2025) |
Politique de compatibilité | Le master conserve la compatibilité arrière. |
MediaWiki | 1.40+ |
Modifie la base de données |
Non |
Composer | mediawiki/data-transfer |
Licence | Licence publique générale GNU v2.0 ou supérieur |
Téléchargement | README |
Exemple | The "view XML" page for Discourse DB |
|
|
datatransferimport |
|
Traduire l’extension Data Transfer sur translatewiki.net si elle y est disponible | |
Problèmes | Tâches ouvertes · Signaler un bogue |
Data Transfer est une extension de MediaWiki qui permet aux utilisateurs d’exporter et d’importer des données depuis et vers le wiki, avec l’exportation effectuée au format XML et l’importation possible dans les formats XML, CSV et certains formats de feuille de calcul.
On peut noter que l'extension Data Transfer n'est pas la solution idéale pour sauvegarder un site wiki, ou pour transférer des pages wiki d'un site MediaWiki à un autre; pour faire cela, la meilleure des solutions est d'utiliser les pages intégrées Special:Export et Special:Import
Code et téléchargement
Vous pouvez télécharger le code de Data Transfer au format .zip, ici.
Ou téléchargez le code via Git depuis le dépôt de code source MediaWiki en exécutant cette commande à partir du répertoire des extensions :
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/DataTransfer
Pour afficher le code en ligne, y compris l'historique de versions de chaque fichier, vous pouvez aller à ici.
Installation
Après avoir obtenu un répertoire 'DataTransfer
' (soit après la décompression de fichiers ou suite au téléchargement via Git), placez ce répertoire dans le répertoire 'extensions' de la racine de MediaWiki.
Ensuite, dans le fichier 'LocalSettings.php
' dans le répertoire principal MediaWiki, ajoutez la ligne suivante :
wfLoadExtension( 'DataTransfer' );
Par défaut, l'importation de fichiers est autorisée uniquement pour les administrateurs système. Si vous voulez que d'autres groupes puissent importer des fichiers, vous pouvez ajouter des lignes supplémentaires à LocalSettings.php pour le permettre. Cette ligne, par exemple, va autoriser tous les utilisateurs à importer les fichiers :
$wgGroupPermissions['user']['datatransferimport'] = true;
Pour permettre à quiconque lisant le wiki d'importer des fichiers, vous pouvez ajouter ce qui suit (bien que cela ne soit généralement pas recommandé) :
$wgGroupPermissions['*']['datatransferimport'] = true;
Utilisation
Export des données
Le transfert de données définit une page spéciale, "Special:ViewXML", qui permet aux utilisateurs de visualiser (et donc de sauvegarder) les pages dans n'importe quelle combinaison des catégories et espaces de noms du wiki sous forme XML. Les champs et les valeurs du XML sont récupérés à partir des champs et des valeurs des appels aux modèles contenus dans la page; tout texte non "modèle" est placé dans une ou plusieurs balises "texte libre". En outre, un champ "ID" est également affiché pour chaque page, en utilisant l' "ID d'article" interne de MediaWiki pour cette page; cela est fait pour que les systèmes externes puissent suivre une page avec un identifiant plus fixe que son nom (qui peut changer souvent). Le XML ne contient que l'état actuel de toute page : les informations sur les auteurs et les dates modifiées, ainsi que les informations sur des versions précédentes de chaque page, ne sont pas enregistrées.
Deux formats pour l'export sont supportés : le premier dit standard contient les balises de la forme <Template name="nom_du_modèle">
et <Field name="nom_du_champ">
.
Le second dit simplifié, contient simplement les balises de forme <nom_du_modèle>
et <nom_du_champ>
.
Special:ViewXML
peut être aussi utilisé pour générer du XML des pages individuelles, en ajoutant un paramètre &titles=
à l'URL, par exemple &titles=Page1|Page2|Page3
.
Par défaut, la partie texte libre (non modèle) d'une page est analysée par l'analyseur syntaxique MediaWiki, de sorte que le wikicode est converti en HTML; alors que les valeurs dans les appels de modèle ne le sont pas. To disable parsing for the free text, add the following to LocalSettings.php:
$wgDataTransferViewXMLParseFreeText = false;
Inversement, pour ajouter l'analyse des valeurs des champs de modèle, ajoutez ce qui suit :
$wgDataTransferViewXMLParseFields = true;
Import de données
Le transfert de données définit trois pages spéciales, Special:ImportXML
, Special:ImportCSV
et Special:ImportSpreadsheet
, qui permettent aux utilisateurs dotés de privilèges d'administrateur de téléverser respectivement des fichiers XML, CSV et différents fichiers de feuille de calcul.
Une fois téléversées, les données sont converties en pages dans le wiki (ou, si des pages avec ces noms existaient déjà dans le wiki, en nouvelles versions de ces pages).
Import des fichiers XML
L'importation XML nécessite le format XML standard, c'est-à-dire non simplifié, que "ViewXML" produit, bien qu'avec plusieurs différences : l'attribut "ID" pour chaque page ne doit pas être présent, niles balises "Category" ou "Namespace" (quelque soit la langue du wiki).
Sortie XML simplifiée
<pages>
<page>
<id>28</id>
<title>Limburger</title>
<Free_Text id="1">
<p><b>Limburger</b> is a cheese that originated in the Herve area of the historical Duchy of Limburg.</p>
</Free_Text>
</page>
</pages>
Format XML standard (entrée et sortie)
Il s'agit à la fois d'un format de sortie et du format nécessaire pour importer les données au format XML.
<Pages>
<Page Title="Limburger">
<Free_Text>
<p><b>Limburger</b> is a cheese that originated in the Herve area of the historical Duchy of Limburg.</p>
</Free_Text>
</Page>
</Pages>
Vous pouvez également importer du contenu dans une autre emplacement de page que la page principale, en utilisant la fonctionnalité Multi-Content Revisions de MediaWiki, en ajoutant l'attribut Slot
, comme ceci :
<Pages>
<Page Title="Limburger" Slot="text-notes">
<Free_Text>
<p><b>Limburger</b> is a cheese that originated in the Herve area of the historical Duchy of Limburg.</p>
</Free_Text>
</Page>
</Pages>
Le texte dans le champ Free_Text
ne peut pas être indenté.
C'est comme indenter le texte dans un article.
Si le Free_Text
est en HTML et qu'il est indenté, tous les enregistrements échoueront.
Si le texte HTML n'est pas indenté, les enregistrements seront importés correctement.
Importer les fichiers CSV
Pour que l'import CSV fonctionne :
- Le fichier doit être en format CSV standard (c'est-à-dire séparé par des virgules, par opposition aux points-virgules ou autres)
- Si le fichier contient des caractères non ASCII il doit être encodé en UTF-8 ou UTF-16 (le dernier étant simplement appelé "Unicode" dans certains programmes Windows)
- Les fins de ligne du fichier devraient contenir des "caractères de fin de ligne" (
\n
) plutôt que des "retours chariot" (\r
). Ceci particulièrement si vous utilisez Mac OS - La ligne supérieure doit contenir le nom de chaque colonne
- Une des colonnes doit contenir le titre de chaque page, et donc son nom de colonne doit être
Title
(quelle que soit la langue du wiki) - Une autre colonne peut contenir tout le texte libre et non modèle de la page : le titre de cette colonne doit être
Free Text
(encore une fois, dans la langue du wiki) - Toutes les autres colonnes doivent représenter le contenu d'un seul champ d'un seul appel de modèle ; le nom d'une telle colonne doit être de la forme
template-name[field-name]
(espaces autorisés). Il n'est pas nécessaire de spécifier séparément les noms du(es) modèle(s) appelés dans la page.
- Une des colonnes doit contenir le titre de chaque page, et donc son nom de colonne doit être
Un bref tutoriel sur le format CSV : si une valeur contient une virgule, vous devez l'entourer de guillemets. Si un champ contenant des guillemets doit être inclus dans des guillemets, ces guillemets doublées doivent être échappées sous forme de guillemets doubles. Un champ vide peut être laissé vide ou contenir des guillemets doublés. You can see here for the full CSV specification.
Voici un exemple de fichier CSV qui peut être analysé par l'extension Data Transfer :
Title,Cheese[Country],Cheese[Texture],Free Text Mozarella,Italy,Semi-soft,It's good on pizzas! Cheddar,England,Hard/semi-hard,"Often sharp, but not always." Gorgonzola,Italy,"buttery or firm, crumbly","salty, with a ""bite"" from its blue veining" Stilton,,"",needs more data
Vous pouvez également importer du contenu dans une autre page "slots" que la page principale, en utilisant la fonctionnalité Multi-Content Revisions de MediaWiki, en ajoutant l'attribut Slot
, comme ceci:
Title,Cheese[Country],Cheese[Texture],Free Text,Slot Mozarella,Italy,Semi-soft,It's good on pizzas!,text-notes Cheddar,England,Hard/semi-hard,"Often sharp, but not always.",text-notes Gorgonzola,Italy,"buttery or firm, crumbly","salty, with a ""bite"" from its blue veining",main Stilton,,"",needs more data,main
Import des fichiers de tableur
Pour l'importation de la feuille de calcul, Data Transfer nécessite la présence de la bibliothèque PhpSpreadsheet, qui effectue le traitement réel de la feuille de calcul. PhpSpreadsheet peut gérer des fichiers de feuille de calcul dans des formats tels que .xls, .xlsx, .ods, Gnumeric, et même PDF et HTML. Les titres des colonnes doivent être les mêmes que pour les fichiers CSV.
Auteurs
Le transfert de données a été principalement écrit par Yaron Koren , accessible à yaron57 gmail.com. Des fonctionnalités importantes ont également été ajoutées par Stephan Gambke et Sahaj Khandelwal.
Historique des versions
L'extension Data Transfer est actuellement en version 1.7. See the entire version history .
Problèmes connus
- L'importation de chaque page est une "tâche" d'arrière-plan de MediaWiki. Cela signifie que les créations de pages ne seront pas faites immédiatement et peuvent prendre des minutes, des heures ou même plus longtemps à terminer. Normalement, les tâches sont activées chaque fois qu'une page est vue sur le wiki; pour accélérer le processus (ou le ralentir), vous pouvez modifier le nombre de tâches exécutées lors de la visualisation d'une page, en définissant $wgJobRunRate ; la valeur par défaut est 1. Un taux d'exécution de tâches trop élevé peut éventuellement entraîner un problème tel que certaines tâches ne s'exécutent pas. Pour que le wiki exécute tous les jobs immédiatement, exécutez le script runJobs.php à partir de la ligne de commande du système d'exploitation.
Personnalisation de l'export XML
Vous pouvez spécifier que toute page spécifique ne doit pas être incluse dans le XML produit, en ajoutant la balise de catégorie [[Category:Excluded from XML]]
à cette page.
Vous pouvez également ajouter cette balise à un modèle, pour exclure toute page qui utilise ce modèle du XML.
Contribution au projet
Problèmes connus et demandes d’améliorations
Vous devez utiliser la liste de diffusion MediaWiki, mediawiki-l, pour toute question, suggestion ou rapport de bug sur le transfert de données.
Contribuer au projet à l'aide de patchs
Si vous avez trouvé un bug et que vous l'avez corrigé, ou si vous avez écrit du code pour une nouvelle fonctionnalité, veuillez en faire une commande Git (si vous avez un compte de développeur), ou créer un correctif en allant dans votre répertoire local "DataTransfer", et en tapant:
git diff > descriptivename.patch
Si vous créez un patch, veuillez l'envoyer avec une description à Yaron Koren.
Traductions
La traduction du transfert de données est effectuée par translatewiki.net. Les traductions pour cette extension se trouvent ici. Pour ajouter des valeurs de langue ou modifier celles existantes, vous devez créer un compte sur translatewiki.net, puis demander la permission aux administrateurs de traduire une ou plusieurs langues sur cette page (c'est un processus très simple). Une fois que vous avez la permission pour une langue donnée, vous pouvez vous connecter et ajouter ou modifier tous les messages que vous voulez dans cette langue.
Voir aussi
- Page import - vue d'ensemble de tous les outils d'importation de pages
Cette extension est incluse dans les fermes de wikis ou les hôtes suivants et / ou les paquets : Cette liste ne fait pas autorité. Certaines fermes de wikis ou hôtes et / ou paquets peuvent contenir cette extension même s'ils ne sont pas listés ici. Vérifiez toujours cela avec votre ferme de wikis ou votre hôte ou votre paquet avant de confirmer. |