|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() |
Bonjour!
Je suis le tout nouveau DBA (en étude, j'y connais encore pas grand chose) d'une base de donnée Interbase, et je dois en quelques sortes dupliquer les données de cette base sur une autre base de donnée sur le réseau. Je me suis un peu renseigné sur les outils, mais j'aimerais savoir comment faire ceci uniquement avec le SQL. J'aurais pensé à une solution: stocker le résultat de mes requêtes dans un fichier texte quelque part sur le réseau, puis récupérer le contenu de ce fichier dans ma deuxième base (qui à le même modèle physique). Mais voilà le problème: avec Oracle, je sais faire ça, mais pas avec Interbase... si quelqu'un pourrait m'aider, ce serais simpa... |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Je suppose qu'un backup de votre base suivit d'un restaure ne vous convient pas ?
Vous pouvez soit créer des tables externes si vous n'avez pas de blob. Ce qui génère un fichier que vous pouvez copier sur votre autre serveur pour l'intégrer de la même manière. Soit d'utiliser Ibexpert qui permet de créer des scripts d'INSERT, ou d'UPDATE voir d'execute procédure (une PS à créer mais qui par exemple fera un update ou insert en fonction de l'existance de l'enregistrement dans la base). Il ne vous reste plus qu a executer ce script sql sur l'autre base. |
|
|
00
|
|
|
#3 |
|
Membre éclairé
![]() |
Effectivement, le restore et backup ne m'est pas utile et pas suffisant.
L'idée des tables externe est bonne, je n'y avais pas pensé, je vais réflèchir à cette option... La dernière proposition (IBExpert), j'y ai pensé, mais mon chef n'est pas d'accord. il ne veut pas utiliser d'outils (vieille école... Ce que je pensais faire: Je fais un select sur une table, les données seront enregistrées dans un fichier texte (style redirection en batch). Je connais la syntaxe Oracle (SPOOL), mais pas Interbase... est-il possible, avec le SQL d'Interbase, de stocker le résultat d'une requête dans un fichier texte? Je pense plus tard récupérer ce fichier texte sur un autre PC et à l'aide d'une procédure, insérer les données. pour le reste, je me débrouillerai, il me faut uniquement la redirection du résultat d'une requête dans un fichier texte. PS: non, ma base ne contient pas de BLOB Merci beaucoup! |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Citation:
Mais peut etre que le but final et de pouvoir exécuter cette procédure régulièrement ou de manière automatique et dans ce cas IBexpert ou IBConsole ,ne sont pas adaptés car demandent à l'utilisateur plusieurs manipulations pour estraire les données (l'insertions des données dans la base cible pouvant être automatisée avec un .bat et IBEScript ou ISQL (livré avec interbase). Donc il vous demande de développer un outil qui le fera. J'ai une question quand même, pourquoi passer par un fichier intermédiaire ? Vous ne pouvez pas vous connecter aux deux bases en même temps ? Citation:
Donc c'est a vous de lire le résultat de votre requete puis de sauver ce résultat dans un fichier. Puis de créer une autre appli (ou une autre fonction dans votre appli) pour lire ce fichier et insérer ces données dans votre autre base. Sinon pourquoi ce fichier intermédiaire ne serait pas tout simplement une base Interbase ? Votre programme de transfert n'en serait que simplifié.... |
||
|
|
00
|
|
|
#5 | ||
|
Membre éclairé
![]() |
Citation:
Citation:
Ce que je vais faire dans le courant de l'après-midi: ré-installer IBExpert et copier le code me permettant de faire ce que je veux, puis j'expliquerai tout ici. Je ne débute pas en SQL (déja une certaine expérience Oracle), mais je débute en Interbase, alors vos conceils me sont précieux! Merci beaucoup pour votre aide! |
||
|
|
00
|
|
|
#6 | ||||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Citation:
Bien entendu cet outil est réservé aux developpeurs de la base de données, il est inutile de l'installer chez le client final. IBExpert permet d'extraire facilement un script de création de votre base et peut inclure également les données des tables sous forme d'insert. Ce script n'est composé que d'ordre SQL qui peuvent donc très bien être exécutées par ISQL (livré avec interbase) ou par l'interpreteur de script en ligne de commande d'IBExpert (IBEScript). Citation:
1- Sans developper une application 2- En utilisant uniquement les outils fournis avec interbase La solution des tables externes me semble être la solution la plus simple. Ou sinon il existe une autre solution qui utilise IBConsole mais elle est valable que si vous voulez transférer toutes les données des tables (sinon faudra supprimer à la main les INSERT en trop de votre script ....) Connectez vous avec IBConsole sur votre base, ouvrez l ecran de propriété d'une de vos tables et dans l'onglet métadata vous avez en bas une case à cocher "Extract table data" si vous la cochez vous verrez apparaitre dans le memo du dessus sous les CREATE TABLE et CREATE TRIGGER les INSERT correspondant à vos données. Copier/Coller dans un fichier texte puis faites le tri des données utiles. Répéter cette opération pour toutes les tables qui vous interressent. Avec Ibexpert cette opération est bien plus simple, je vais la décrire pour que vous compreniez le temps que vous allez gagner : Soit vous voulez tous les script de création de votre base avec les données : Menu Outils/ Extraire la métadata/Cochez tout extraire ou selectionnez que les tables a extraire/Onglet Tables Données sélectionnez les données a extraire/Executer l'extraction. Oubien il n'y a que quelques données d'une table qui vous interessent. Lancez l'Editeur SQL(F12)/ Ecrivez votre select correspondant aux données à copier/Executer votre requete(F9)/Appuyez sur le bouton Exporter les données dans un script. Voilà |
||||
|
|
00
|
|
|
#7 | |
|
Membre éclairé
![]() |
okay, alors je vais voire pour les tables externes.
Citation:
En commençant ce projet, je n'avais pas beaucoup de contraintes, et j'ai voulu savoir si il était possible de faire ces opérations uniquement avec IBConsole, et vous m'avez prouvé que c'est fastidieux, lent, mais faisable. IBExpert simplifie le travail, c'est sûr. Mais maintenant, je crois que je vais m'en tenir à l'idée des tables externes. Merci encore pour votre aide! [EDIT] J'oubliais... ben comme j'ai une solution, même si c'est pas celle que j'espérait, alors le sujet est résolu. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com