Import / export de données Ingres

Décembre 2016

Ingres permet d'exporter les données d'une installation Ingres vers une autre (quels que soient l'OS cible ou source) par les commandes :
  • unloaddb
  • copydb


Ce qui change entre ces 2 commandes c'est leur périmètre :
  • unloaddb concerne tous les objets de la base (y compris les sources des outils front end type ABF, OpenROAD ou Report Writer, les catalogues Replicator, Star, etc)
  • copydb ne concerne que les objets de celui qui l'invoque (ou de celui qui se fait passer pour celui qui l'invoque)

Principe de fonctionnement de ces commandes ...


copydb
Exemple
copydb mabase matable

Cette commande va vous générer 2 fichiers : copy.in et copy.out pour peu que la table matable existe dans la base mabase et qu'elle vous appartienne.
Ces fichiers contiennent une série d'ordres SQL :
copy.out :
  • déchargement des données : COPY TABLE ... INTO ...

copy.in :
  • création de la table : CREATE TABLE ...
  • structure de la table (si nécessaire) : MODIFY ...
  • rechargement des données : COPY TABLE ... FROM ...
  • création du ou des indexes (si nécessaire) : CREATE INDEX ...


Utilisation de ces fichiers
Pour décharger les données :
sql mabase < copy.out

Pour recharger les données :
sql mabase < copy.in


unloaddb
Exemple
unloaddb mabase

Cette commande va générer 4 fichiers : copy.in, copy.out, reload.ing et unload.ing (ou reload.bat et unload.bat sous Windows)

De la même manière que pour la commande copydb, les fichiers copy.in et copy.out contiennent les ordres SQL nécessaires au déchargement des données et à la création des objets (tous les objets : tables, indexes, règles, procédures, vues, dbevent, etc.) ainsi que celui du rechargement des données. Ce qui change avec unloaddb c'est qu'il génère aussi les programmes pour appeler ces fichiers contenant le code SQL.

Quelques conseils ...


1 - Pour réaliser une copie portable d'un OS à l'autre (peu importe la version, le type, le codage ISO, etc), utilisez l'option -c (disponible pour chacune de ces 2 commandes) qui vous permettra de générer un export/import de données dit au format ASCII. Au départ cela permet aussi d'imprimer directement le fichier (je ne vous le conseille pas), mais en tout cas il à peu près lisible via un éditeur texte. Regardez en fait le format des ordres COPY TABLE avec sous sans cette option, tout se passe à ce niveau là.

2 - Faites attention aux variables suivantes (liste non exhaustive - regardez dans l'environnement Ingres par ingprenv ou dans votre environnement local) :
- II_DATE_FORMAT : format de la date
- II_DECIMAL : Séparateur des décimales (Ingres est un produit américain, par défaut c'est le point)
- II_MONEY_PREC : précision des données de type money
- II_MONEY_FORMAT : format des données de type money (pour indiquer une devise)
- II_NULL_STRING : texte utilisé pour représenter la valeur null
Ces variables doivent être identiques entre la machine source et la machine cible. En effet, elles sont utilisées pour formater les données lors de l'export ou pour les lire lors de l'import. Elles ont donc besoin d'être compatibles ...

3 - Déclarez les mêmes locations : même nombre, même noms, et même types. Les répertoires peuvent être différents

4 - Etendez la base cible aux mêmes locations que la base source : vérifiez les locations de l'une et l'autre par la commande infodb, utilisez accessdb ou extenddb pour étendre une base.

5 - Capturez le résultat (stdout) dans un fichier, et cherchez toute ligne commençant par E_. Cela indique une erreur Ingres à analyser.

6 - Si un reload (ou copy.in) échoue, songez que si vous le relancez une partie des objets à créer est peut-être déjà créée ...

A voir également :

Ce document intitulé «  Import / export de données Ingres  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.