Effectivement ces clés étrangères faisant référence à une table dans un autre schéma n'étaient pas exportées. Ce n'est plus le cas, j'ai complètement réécrit la fonction d’extraction des foreign key et le commit d4a90fe corrige le problème. Merci de télécharger et d'utiliser le code en développement disponible sur github ( https://github.com/darold/ora2pg ).
En faisant un export d'un schéma on obtient le code suivant :
ALTER TABLE employees ADD CONSTRAINT fk_dept_deptno FOREIGN KEY (department_id) REFERENCES scott.dept(deptno) ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE;
la table référencée est préfixée par le nom du schéma, ici scott. Et si l'on fait un export sans schéma, les deux tables sont préfixées par leur nom de schéma :
ALTER TABLE hr.employees ADD CONSTRAINT fk_dept_deptno FOREIGN KEY (department_id) REFERENCES scott.dept(deptno) ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE;
Par la même occasion l'extraction du catalogue Oracle devrait être plus rapide aussi.
A noter que le commit précédent corrige l'absence des créations de schéma si EXPORT_SCHEMA et CREATE_SCHEMA sont positionné à 1.
Cordialement,
]]>Comment exportez vous les schémas ? Un par un ou sans spécifier de schéma (directive SCHEMA dans ora2pg.conf ou option -n)?
Lorsque que vous exportez les schémas un par un, seul les objets appartenant ou pointant vers ce schéma sont exportés. En mettant en commentaire la directive SCHEMA et en activant EXPORT_SCHEMA à 1 Ora2Pg exportera l'intégralité des objets en les préfixant par leur nom de schéma dans Oracle et normalement vous devriez retrouver vos foreign keys. Si ce n'est pas le cas alors il s'agit d'un bug.
Cordialement,
]]>Je suis en train de faire des tests de migration avec ora2pg v17.4 (depuis 1 base Oracle 11gR2). J'ai dans ma base 1 dizaine de schémas avec des foreign keys entre eux. Je vois que ora2pg ne prend pas ces foreign keys et pour l'instant je n'ai rien trouvé sur la doc ou le net par rapport à ça, savez-vous si une option le permet ?
Merci !
]]>