7.4 Importer des documents par ligne de commande
La commande wsh importDocuments permet d'importer des
documents en ligne de commande. Les types suivants sont supportés par le script
:
-
CVS
- Encodage : UTF-8,
- Séparateur de colonnes :
;(point-virgule par défaut - configurable en 3.2.12). - Délimiteur de texte :
(vide par défaut - configurable en 3.2.12),
- ODS,
- XML,
- ZIP,
- TGZ
./wsh.php --api=importDocuments --help
Import documents from description file
Usage :
--file=<the description file path>
Options:
--userid=<user system id or login name to execute function - default is (admin)>, default is '1'
--analyze=<analyze only> [yes|no], default is 'no'
--archive=<description file is an standard archive (not xml)> [yes|no], default is 'no'
--log=<log file output>
--policy=<policy import -
[update] to auto update same document (the default),
[add] to always create new document,
[keep] to do nothing if same document already present> [update|add|keep]
--htmlmode=<analyze report mode in html> [yes|no], default is 'yes'
--reinitattr=<reset attribute before import family update (deprecated)> [yes|no]
--reset=<reset options> [default|parameters|attributes|structure|properties|enums]
--to=<email address to send report>
--dir=<folder where imported documents are put>
--strict=<don't import if one error detected> [yes|no], default is 'yes'
--csv-separator=<character to delimiter fields - generaly a comma> use single character or "auto", default is ';'
--csv-enclosure=<character to enclose fields - generaly double-quote> use single character or "auto", default is ''
--csv-linebreak=<character sequence to be import like CRLF>, default is '\n'
--help (Show usage)
L'option --analyze=yes permet de réaliser une importation à blanc. Dans ce
cas, l'importation est réalisée mais aucune modification n'est enregistrée en
base de données. Cela permet de récupérer le rapport d'importation :
./wsh.php --api=importDocuments --analyze=yes --htmlmode=yes --file=animal.xml > report.html
Pour envoyer le rapport par courriel, l'option --to permet de désigner
l'adresse du destinataire :
./wsh.php --api=importDocuments --to=someone@somewhere.org --file=animal.xml
Pour avoir un fichier de log, l'option --log permet de spécifier l'emplacement
auquel enregistrer le fichier de log :
./wsh.php --api=importDocuments --file=animaux.xml --htmlmode=yes --analyze=yes --log=/var/tmp/log.txt
$ cat /var/tmp/log.txt
IMPORT BEGIN OK : 02/07/2010 17:10:29
IMPORT DOC OK : [title:Isabelle] [id:0] [action:added] [changes:{nom:Isabelle}{espèce:1132}] [message:Isabelle à ajouter]
IMPORT DOC OK : [title:Alli2 Agouti] [id:3296] [action:updated] [changes:] [message:]
IMPORT DOC KO : [title:] [id:0] [action:ignored] [changes:] [message:] [error:DOMDocument::load(): Opening and ending tag mismatch: r line 5 and zoo_animal in /var/tmp/xmlsplit4c2e10009374f/3299.xml, line: 10DOMDocument::load(): Premature end of data in tag zoo_animal line 2 in /var/tmp/xmlsplit4c2e10009374f/3299.xml, line: 11]
IMPORT COUNT OK : 2
IMPORT COUNT KO : 1
IMPORT END OK : 02/07/2010 17:10:31
3.2.18 Les documents ayant des
attributs en visibilité I sont importés sans tenir compte de
cette contrainte.
7.4.1 Options pour les importations de familles
L'option reset permet d'influer sur l'interprétation de l'importation en
rajoutant des instructions de RESET au(x) définition(s) de famille(s).
L'option reset rajoute l'instruction RESET correspondant après chaque
BEGIN du fichier. Toutes les familles définies ont cette instruction
ajoutée.
./wsh.php --api=importDocuments --file=my_family.csv --reset=attributes
Cette option peut être multivaluée pour indiquer plusieurs instructions de
RESET.
./wsh.php --api=importDocuments --file=my_family.csv --reset[]=enums --reset[]=default
L'option reinitattr est dépréciée. Cette option est équivalente à
reset=attributes.
7.4.2 Gestion des erreurs
Si une seule erreur est détectée sur le fichier d'importation, aucun document du fichier d'importation ne sera ajouté ou modifié.
La liste des codes d'erreur reportés est consultable dans la documentation de l'API PHP : "Error codes".