Précédent   Forum des professionnels en informatique > Bases de données > Firebird > Débuter
Débuter Forum d'entraide pour débuter avec Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/10/2004, 15h37   #1
Membre éclairé
 
Avatar de Cerberes
 
Inscription : janvier 2004
Messages : 328
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 328
Points : 309
Points : 309
Envoyer un message via MSN à Cerberes
Par défaut [IB6] Stocker résultat requête ds fichier txt réseau

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...
Cerberes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2004, 10h47   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
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.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2004, 11h01   #3
Membre éclairé
 
Avatar de Cerberes
 
Inscription : janvier 2004
Messages : 328
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 328
Points : 309
Points : 309
Envoyer un message via MSN à Cerberes
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 je réflèchirai pour les tables externes.

Merci beaucoup!
Cerberes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2004, 11h59   #4
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Citation:
Envoyé par Cerberes
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... ).
La version gratuite d'IBExpert permet de faire ce que je vous ai dit. Et ce n'est qu'un outil d'administration de base comme un autre, celui livré avec Interbase (IBConsole) étant un peu limité. En plus on n'a pas besoin d'IBEXpert pour exécuter le script généré par celui ci. On peux utiliser IBConsole ou IBExpert (mais il faut l'installer) ou même IBEScript (qui est livré avec IBExpert et qui ne necessite pas une installation, il est en plus léger (650Ko)). IBEScript est un utilitaire en ligne de commande DOS.

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:
Envoyé par Cerberes
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?
Non il n'y a pas d'equivallent sous Interbase.
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é....
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2004, 12h53   #5
Membre éclairé
 
Avatar de Cerberes
 
Inscription : janvier 2004
Messages : 328
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 328
Points : 309
Points : 309
Envoyer un message via MSN à Cerberes
Citation:
Envoyé par Barbibulle
En plus on n'a pas besoin d'IBEXpert pour exécuter le script généré par celui ci
Alors il faudra que je réetudie le cas d'IBExpert. Effectivement, j'ai téléchargé et installé ce programme, mais mon chef n'était pas d'accord de l'utiliser.

Citation:
Envoyé par Barbibulle
il vous demande de développer un outil qui le fera
Non, je ne dois pas développer d'outils...

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!
Cerberes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2004, 15h07   #6
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Citation:
Envoyé par Cerberes
Citation:
Envoyé par Barbibulle
En plus on n'a pas besoin d'IBEXpert pour exécuter le script généré par celui ci
Alors il faudra que je réetudie le cas d'IBExpert. Effectivement, j'ai téléchargé et installé ce programme, mais mon chef n'était pas d'accord de l'utiliser.
Je ne vois pas en quoi avoir un outil d'administration de base plus puissant qu'IBConsole est genant. Je dirais même que c'est presque indispensabe tellement il facilite la vie du développeur.
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:
Envoyé par Cerberes
Citation:
Envoyé par Barbibulle
il vous demande de développer un outil qui le fera
Non, je ne dois pas développer d'outils...

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!
Si vos contraintes sont :
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à
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2004, 15h13   #7
Membre éclairé
 
Avatar de Cerberes
 
Inscription : janvier 2004
Messages : 328
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 328
Points : 309
Points : 309
Envoyer un message via MSN à Cerberes
okay, alors je vais voire pour les tables externes.
Citation:
Envoyé par Barbibulle
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"...
Effectivement, c'est ce que j'était en train de faire... et c'est vrai, c'est beaucoup plus simple avec IBExpert.
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.
Cerberes est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h12.


 
 
 
 
Partenaires

Hébergement Web