SIARD Suite 2.2 - Appel des lignes de commandes

Les fonctions de téléchargement et de chargement de SIARD Suite peuvent être appelées depuis la ligne de commande:

Haut de page

SiardFromDb

SiardFromDb est un programme de lignes de commande qui télécharge une base de données dans une archive SIARD. Avec SiardFromDb, on peut

  • créer une archive SIARD (métadonnées et données primaires) depuis une base de données (Option -s) et/ou
  • créer un XML de métadonnées SIARD avec la définition du schéma de la base de données (option -e).

Haut de page

Appel

java -cp <siardpath>/lib/siardcmd.jar ch.admin.bar.siard2.cmd.SiardFromDb [-h] |
[-o] [-v] [-l=<login timeout>] [-q=<query timeout>] [-i=<import meta data>] [-x=<external lob folder>] [-m=<mime type>]
-j=<JDBC URL> -u=<database user> -p=<database password> -s=<siard file> -e=<export meta data>"
                

Comme <siardpath> il faut indiquer le répertoire dans lequel SIARD Suite a été installé. Le fichier siardcmd.jar se trouve dans le sous-répertoire lib avec sa classe ch.admin.bar.siard2.cmd.SiardFromDb dont main() est lancé avec java (sous Windows, il faut utiliser à la place javaw).

La syntaxe d'appel est affichée si l'option -h(help) est définie comme argument de la ligne de commande.

Haut de page

Arguments

ArgumentSignification
-oEcraser (overwrite) le(s) fichier(s) de sortie pour autant qu'il en existe.
-varchiver les Views (Vues) comme tableaux
<login timeout>Timeout en secondes pour l'annonce (login) (0 pour illimité)
<query timeout>Timeout en secondes pour la requête (0 pour illimité)
<import meta data>Nom du fichier XML des métadonnées qui sont à prendre en compte comme exemples
<external LOB folder>Répertoire où les données de la plus grande colonne LOB (large object) de la base de donnée sont à enregistrer en externe (les contenus du même nom seront écrasés!)
<mime type>Type MIME des données de la plus grande colonne LOB de la base de données (influence le choix de l'extension des LOBs enregistrés en externe).
<JDBC URL>URL JDBC de la base de donnée qui doit être téléchargée
par ex.
pour MS Access
jdbc:access:D:\Projekte\SIARD2\JdbcAccess\testfiles\testdb.mdb
pour DB/2
jdbc:dbserver.enterag.ch:50000/testdb
pour MySQL
jdbc:mysql://dbserver.enterag.ch:3306/testdb
pour Oracle
jdbc:oracle:thin:@dbserver.enterag.ch:1521:orcl
pour Postgres
jdbc:postgresql://dbserver.enterag.ch:5432/testdb
pour SQL Server
jdbc:sqlserver://dbserver.enterag.ch\testdb:1433
<database user>Utilisateur base de données
<database password>Mot de passe base de données
<siard file>Nom du fichier .siard à créer
<export meta data>Nom du fichier de métadonnées .xml à exporter

Haut de page

Remarques

Il faut indiquer, soit le fichier SIARD, soit le fichier d'exportation pour les métadonnées, ou les deux.

Le programme SiardFromDb devrait être lancé sur un snapshot de la base de données ne se modifiant pas durant le processus d'archivage.

L'option Archiver les vues comme tableaux a normalement comme conséquence un enregistrement redondant des mêmes données et n'est ainsi pas recommandée. Elle est utile si l'utilisateur de la base de donnée employé pour l'archivage veut afficher les contenus des vues (views), mais pas ceux des tableaux de base.

Le processus d'archivage est soit complètement réussi ou complètement raté.

Pour de grosses bases de données, il est recommandé de télécharger d'abord l'XML des métadonnées. Celui-ci contient toutes les métadonnées et les grandeurs de tableaux et aide ainsi à évaluer le temps d'exécution du download. Par ailleurs, il faudrait utiliser l'option -q 0 pour de grands tableaux, car il est impossible d'évaluer combien de secondes durera une requête de taille.

La conversion de TIMEs et TIMESTAMPs dans la base de données dépend du fuseau horaire local. Si l'heure 15:30 à Zürich est archivée, l'heure UTC 14:30 est enregistrée dans l'archive SIARD - en hiver. Pour empêcher cette conversion, il faut lancer SiardFromDb avec l'option

-Duser.timezone=GMT

qui indique à SIARD d'interpréter toutes les heures des bases de données comme heures UTC.

Haut de page

Utilisateur d'archivage

Ce n'est généralement pas judicieux d'employer l'administrateur de bases de données (DBA, root, dbo, ...) avec tous les droits pour télécharger une archive SIARD. Le volume des données enregistrées dans l'archive SIARD est défini par les objets, sur lesquels l'utilisateur de l'archive a les droits de lecture. Le DBA global peut normalement lire toutes les bases de données du système et également beaucoup de tableaux système qui ne sont pas à archiver. C'est pourquoi il est important d'employer pour le téléchargement un utilisateur adéquat, ou éventuellement d'en créer un nouveau.

Haut de page

SiardToDb

SiardToDb est un programme de lignes de commandes qui charge une archive SIARD dans une base de données en vue de recherches.

Haut de page

Appel

java -cp <siardpath>/lib/siardcmd.jar ch.admin.bar.siard2.cmd.SiardToDb [-h]
[-o] [-l=<login timeout>] [-q=<query timeout>]
-s=<siard file> -j=<JDBC URL> -u=<database user> -p=<database password>
[<schema> <mappedschema>]*

Comme <siardpath> il faut indiquer le répertoire où SIARD Suite a été installé. Le fichier siardcmd.jar se trouve dans le sous-répertoire lib avec sa classe ch.admin.bar.siard2.cmd.SiardToDb dont main() est lancé avec Java (sous Windows, il faut utiliser à la place javaw).

La syntaxe d'appel est affichée si l'option -h(help) est définie comme argument de la ligne de commande.

Haut de page

Arguments

ArgumentSignification
-oEcraser (overwrite) des types du même nom et/ou des tableaux dans la bases de données, pour autant qu'il en existe.
<login timeout>Timeout en secondes pour l'annonce (login) (0 pour illimité)
<query timeout>Timeout en secondes pour une requête (query) (0 pour illimité)
<siard file>Nom du fichier .siard à charger
<URL JDBC URL>URL JDBC de la base de données cible
par ex.
pour MS Access
jdbc:access:D:\Projekte\SIARD2\JdbcAccess\testfiles\testdb.mdb
pour DB/2
jdbc:dbserver.enterag.ch:50000/testdb
pour MySQL
jdbc:mysql://dbserver.enterag.ch:3306/testdb
pour Oracle
jdbc:oracle:thin:@dbserver.enterag.ch:1521:orcl
pour Postgres
jdbc:postgres://dbserver.enterag.ch:5432/testdb
pour SQL Server
jdbc:sqlserver://dbserver.enterag.ch\testdb:1433
<database user>Utilisateur base de données
<database password>Mot de passe base de données
<schema>Nom du schéma dans l'archive SIARD
<mappedschema>Nom du schéma à utiliser dans la base de données

Haut de page

Remarques

Comme les anciennes bases de données ne sont pas conformes à SQL:2008, il est inévitable de procéder à une certaine préparation manuelle en vue du chargement. Dans MS Access, il n'y pas d'objet schéma. Les utilisateurs et les schémas sont inséparables dans Oracle. Les objets schémas et les bases de données reviennent au même dans MySQL. C'est pourquoi tous les schémas doivent être créés manuellement avant le chargement. Par ailleurs, l'utilisateur doit avoir le droit de créer des tableaux et des types dans ces schémas. Comme cela n'est pas toujours facile, les schémas des bases de données sont attribués aux noms de schémas selon la liste des mappings de schémas dans la ligne de commande.

Le chargement ne crée que des tableaux et des types et tente d'activer des clés uniques et étrangères. Aucun autre objet ne sera créé dans la base de données cible. Si les clés n'ont pas pu être activées, un avertissement est affiché. Le chargement sera toutefois considéré comme terminé. Il est aussi possible sans ces clés d'exécuter des requêtes SQL SELECT dans la base de données.

D'éventuels compromis sont éventuellement faits lors du chargement. Avec MS Access, les tableaux tombent dans la même MDB/ACCDB. Avec Oracle, tous les noms plus longs que 30 caractères sont raccourcis. Pour éviter des conflits, les noms des tableaux et des colonnes sont complétés par un compteur (par ex. "Un nom de tableau beaucoup trop long" dans un tableau deviendra "Un nom de tableau beaucoup tr0" dans Oracle).

Lorsque le maximum de précision et le nombre maximal de décimales sont plus petits que nécessaire (par ex. dans MS Access), des valeurs de plus faible précision seront chargées. SIARD fait recours à ce qui est possible dans la base de données système cible. Si on consulte les métadonnées de la base de données au moyen de SiardGui, on pourra attribuer les descriptions et les valeurs correctes.

La conversion de TIMEs et TIMESTAMPs dans la base de données dépend des fuseaux horaires locaux. L'heure UTC 14:30 dans l'archive SIARD sera, lors du chargement à Zurich, chargée comme heure locale 14:30 dans la base de données. Pour éviter cette conversion, SiardToDb doit être lancé avec l'option

-Duser.timezone=GMT

qui indique à SIARD d'interpréter toutes les heures de la base de données comme heures UTC.

Haut de page