requêtes entre BDD Oracle différentes

requêtes entre BDD Oracle différentes - SQL/NoSQL - Programmation

Marsh Posté le 05-12-2005 à 15:25:18    

Bonjour,
Je dispose d'une base Oracle ORADB1 avec le paramétrage suivant :

  • NLS_CHARACTERSET=WE8MSWIN1252
  • NLS_NCHARACTERSET=AL16UTF16

et d'une deuxième base Oracle ORADB2 avec le paramétrage suivant :

  • NLS_CHARACTERSET=AL32UTF8
  • NLS_NCHARACTERSET=AL16UTF16


Dans les 2 bases, j'ai une table TOTO.F0101 qui a une colonne de type différent selon la base :

  • VARCHAR2 pour ORADB1
  • NVARCHAR2 pour ORADB2


Ma question : est-il possible de faire un requête du style "INSERT INTO TOTO.F0101@ORADB2 SELECT * FROM TOTO.F0101@ORADB1" ?
 
J'ai essayé de le faire "bêtement" en ouvrant une session SQL*Plus sur ORADB1 et en exécutant une telle requête mais la table est illisible de l'autre côté.
 
Merci pour votre aide.
Cordialement,

Reply

Marsh Posté le 05-12-2005 à 15:25:18   

Reply

Marsh Posté le 05-12-2005 à 16:40:32    

faut changer le charset à la volée durant le insert.
 
j'ai plus la syntaxe en tête, mais c'est possible, je l'ai fait.
 
le but du jeu à l'époque était d'échanger des caractères étendus entre d'un côté une base configurée en UTF-8 et de l'autre une base configurée en ASCII Latin-1. On s'était bien amusé pour les caractères japonnais et arabes... en effet, écrire de l'utf dans une base ASCII, aucun problème... par contre, pour relire...
 
je me souvient que c'était un bordel pas possible, il fallait caster deux fois, mais je n'ai plus aucun souvenir de comment on avait fait.

Reply

Marsh Posté le 06-12-2005 à 09:40:45    

Arjuna a écrit :

faut changer le charset à la volée durant le insert.
 
j'ai plus la syntaxe en tête, mais c'est possible, je l'ai fait.
 
le but du jeu à l'époque était d'échanger des caractères étendus entre d'un côté une base configurée en UTF-8 et de l'autre une base configurée en ASCII Latin-1. On s'était bien amusé pour les caractères japonnais et arabes... en effet, écrire de l'utf dans une base ASCII, aucun problème... par contre, pour relire...
 
je me souvient que c'était un bordel pas possible, il fallait caster deux fois, mais je n'ai plus aucun souvenir de comment on avait fait.


Gargl!
Voilà qui est dommage pour ta mémoire... Si quelqu'un d'autre a une idée...
Ce serait pas à l'aide des fonctions tochar ou to_nchar par hasard ?

Reply

Marsh Posté le 06-12-2005 à 09:58:49    

de mon côté, je n'ai jamais touché au type "nvarchar" d'oracle, car il est inutile pour mettre de l'unicode, un varchar2 suffit.
 
nan, par contre, les "nls_machintruc('avec plein de carctères dans tous les sens')" ça oui faut les utiliser.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed