Question

Dans Informix je peux exécuter instruction SQL qui utilisent autre base de données:

INSERT INTO other_db:mytable ...

Je voudrais « unir » les deux bases de données, mais je voudrais le faire « pas à pas ».

Au début, je veux déplacer toutes les données de other_db à base de données principale et faire alias other_db = main_database. De cette façon, j'aurai temps de supprimer "other_db:". de toutes les déclarations

Comment définir l'alias de base de données?

Était-ce utile?

La solution

Je ne suis pas au courant d'aucune méthode pour créer un alias pour la base de données entière.

Cependant, vous pouvez créer des synonymes à travers les bases de données, sous la forme:

DATABASE old_db;
CREATE SYNONYM table_name FOR new_db:table_name;

Si vous créez un tel alias pour chaque table comme il est déplacé, vous devriez être en mesure d'obtenir le même effet. Une fois que toutes les tables ont été déplacés, vous pouvez supprimer toutes les références à old_db.

Vous pouvez interroger systables pour identifier les vraies tables dans old_db, à savoir:

DATABASE old_db;
SELECT tabname, nrows
  FROM systables
  WHERE tabtype = "T"
    AND tabid > 99 -- exclude internal tables

La ligne de comptage sera bien entendu dépendre UPDATE STATISTICS raisonnablement courant.

L'espoir qui aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top