Syntaxe pour migration données via ODBC

Syntaxe pour migration données via ODBC - SQL/NoSQL - Programmation

Marsh Posté le 12-10-2006 à 17:00:42    

Voila je voudrais réaliser la migration de données entre une base Sybase et une base Oracle.
 
Le but serait d'écrire un ensemble de scripts qui font un INSERT dans la base ORACLE sur base d'un SELECT dans la base SYBASE.
 
Inutile de proposer de passer par des fichiers temporaires (ce sera ma solution de dernier recours, mais je suis pas trop chaud).
 
A priori ca semble techniquement possible mais je bute sur la syntaxe. Si quelqu'un avait un début de piste ca m'aiderait vraiment.  
 
On dispose d'un ODBC sur chacune des base.


---------------
En informatique, le problème se situe en général entre la chaise et le clavier :whistle
Reply

Marsh Posté le 12-10-2006 à 17:00:42   

Reply

Marsh Posté le 12-10-2006 à 17:24:19    

Pourquoi la solution des fichiers sql te pose un problème :??:
 
Suffirait de faire un export puis un import et c'est torché pour une base complète :)
 

Reply

Marsh Posté le 12-10-2006 à 20:43:49    

le problème c'est qu'on est dans un environnement sécurisé et on a pas trop envie que des données voyagent dans des fichiers.

Reply

Marsh Posté le 12-10-2006 à 22:33:10    

Tes 2 serveurs ils seront pas au même endroit?  
 
Que ça passe par du réseau jusqu'à un serveur ou que le fichier aille jusqu'au serveur ça sera la même chose.
 
Faudrait plus de détail pour trouver la meilleure solution ;)
 
M'enfin si y'a obdc des 2 côtés, suffit juste de taper dans une base et de recopier dans l'autre je vois pas vraiment le problème :??:

Reply

Marsh Posté le 13-10-2006 à 07:23:50    

ben justement mon probleme c'est la syntaxe de la SQL
Genre :
 
INSERT INTO Server1.DB1.Table (Select * from Server2.DB2.Table)

Reply

Marsh Posté le 13-10-2006 à 09:31:29    

Tu ne pourra pas avec une unique connexion et une unique requête faire un import/export entre 2 SGBD différents.
 
Ce qu'il faut faire :
 
- Ouvrir une connexion ODBC sur la base 1
- Ouvrir une connexion ODBC sur la base 2
- Faire un select sur la base 1
- Stocker les résultats (dans un objet type recordset par ex)
- Faire un insert sur la base 2. Avec comme paramètre les résultats du select.
- Fermer les 2 connexions
 
Ca se fait rapidement en VB .net voire en VBA si tu as Office qui traîne sur un poste avec accès ODBC pour chaque base.
 
Par contre, j'espère que l'encodage est le même des deux côtés sinon gare aux surprises :D
 
Bonne chance :)

Reply

Marsh Posté le 13-10-2006 à 09:37:01    

jeoff a écrit :

Tu ne pourra pas avec une unique connexion et une unique requête faire un import/export entre 2 SGBD différents.
 
Ce qu'il faut faire :
 
- Ouvrir une connexion ODBC sur la base 1
- Ouvrir une connexion ODBC sur la base 2
- Faire un select sur la base 1
- Stocker les résultats (dans un objet type recordset par ex)
- Faire un insert sur la base 2. Avec comme paramètre les résultats du select.
- Fermer les 2 connexions
 
Ca se fait rapidement en VB .net voire en VBA si tu as Office qui traîne sur un poste avec accès ODBC pour chaque base.
 
Par contre, j'espère que l'encodage est le même des deux côtés sinon gare aux surprises :D
 
Bonne chance :)


Ca c'est au cas où ni Oracle ni Sybase supportent les DBLink à travers ODBC.
 
Moi je suis de l'avis de chev6791.
Il faut trouver un moyen (si Sybase ne sait pas faire, je suis certain que Oracle le permet) afin d'ouvrir un DBLink à travers ODBC d'un des serveurs vers l'autre.
Ce sera à la fois rapide et fiable. Sans parler du fait que pour un traîtement un peu plus complexe, il pourra gérer dans une unique transaction les transactions des deux serveurs.

Reply

Marsh Posté le 13-10-2006 à 09:47:21    

MagicBuzz a écrit :

Ca c'est au cas où ni Oracle ni Sybase supportent les DBLink à travers ODBC.
 
Moi je suis de l'avis de chev6791.
Il faut trouver un moyen (si Sybase ne sait pas faire, je suis certain que Oracle le permet) afin d'ouvrir un DBLink à travers ODBC d'un des serveurs vers l'autre.
Ce sera à la fois rapide et fiable. Sans parler du fait que pour un traîtement un peu plus complexe, il pourra gérer dans une unique transaction les transactions des deux serveurs.


 
Voila t'as bien résumé la situation je trouve.
 
Tu as une idée de la syntaxe pour 'passer le nom du serveur et de la DB' parce que j'ai fait quelques test avec Server1.db1.Table mais ca me génère des erreurs de syntaxe.


---------------
En informatique, le problème se situe en général entre la chaise et le clavier :whistle
Reply

Marsh Posté le 13-10-2006 à 09:52:13    

aucune idée :sweat:
 
sous sql sever la syntaxe est relativement simple, mais c'est la seule que je connaisse.
 
(t'as qu'à monter un SQL Server, faire des dblink, et faire le transfert de sybase à Oracle en passant par SQL Server :D --ceci dit, c'est pas complètement stupide, les lots DTS de SQL Server ça peut être bien intéressant ;) --)

Reply

Marsh Posté le 13-10-2006 à 13:15:53    

Désolé, je ne connaissais pas l'existence des DBLink ...
Faudra que je creuse ça à l'occasion :D

Reply

Marsh Posté le 13-10-2006 à 13:15:53   

Reply

Marsh Posté le 13-10-2006 à 14:13:48    

un peu de doc afin de voir Sybase depuis Oracle (ce qui reviens au même donc)
 
http://forums.oracle.com/forums/th [...] ID=1323825
 
(l'exemple traîte de SQL Server mais bon, y'a pas de raison pour que ça ne marche pas pareil pour se connecter à Sybase -d'autant qu'à la base, MS SQL est une vieille version de Sybase qui a évoluée de son côté, donc les deux SGBD doivent être relativement équivalents pour ce qui est de la connectivité)

Reply

Sujets relatifs:

Leave a Replay

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