IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils Firebird Discussion :

équivalent SQL*Loader pour FB / IB


Sujet :

Outils Firebird

  1. #1
    Membre régulier
    Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 105
    Points
    105
    Par défaut équivalent SQL*Loader pour FB / IB
    Bonjour,

    Je recherche un outils me permettant de charger des fichiers plats dans une base FB 1.5.
    L'idéal serait de trouver un outils dont le fonctionnement se rapprocherais de celui du fameux SQL*Loader pour Oracle.

    Est-ce que quelqu'un a déjà entendu parler d'un tel outil ?

    Merci d'avance.
    Le hasard ne favorise que les esprits préparés.

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Il existe pas mal d'outils pouvant le faire.
    Maintenant tout dépend votre besoin.

    Juste le temps d'un transfert ?
    Automatisable ?

    FB/Interbase savent lire certains type de fichier plat sous forme de table externe.

  3. #3
    Membre régulier
    Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 105
    Points
    105
    Par défaut
    Je recherche un outil qui soit automatisabe.
    Mais en plus j'aimerais pouvoir définir le format du fichier plat dans un fichier de paramettrage.
    FB/Interbase savent lire certains type de fichier plat sous forme de table externe.
    J'ai essayé les tables externe, mais je n'ai pas bien compris quel format devait avoir le fichier plat.
    As-tu de la doc ?
    Le hasard ne favorise que les esprits préparés.

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut
    j'utilise quasi toujours les tables externes pour "entrer" les données volumineuses dans la base.

    il faut pour cela, un fichier colonnés terminé par un CR/LF ou LF seul, cela n'est pas indispensable, mais cela simplifie la vie lorsqu'il faut y jeter un oeil!

    dans ta déclaration, tu inclu cette colonne (LF) pour ne pas avoir de décalage lors de la lecture, un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE STAT_CAB_EXTERNAL
    EXTERNAL FILE 'C:\FOO\foo.txt'
    (
      ID                Char( 9),
      CAB               Char(12),
      NumWeek           Char( 4),
      FirstDateWeek     Char(10),
      LastDateWeek      Char(10),
      QS_PRO            Char( 2)
    )
    dans cet exemple, la colonne "QS_PRO" correspond au retour ligne suivi du saut de ligne (fichier windows par exemple)

    j'utilise journellement ce procédé pour injecter des données via un automate et cela fonctionne très bien, il faut juste prendre soin de détruire la table externe pour permettre la mise à jour du fichier externe (plus sûr)

    pour cela, l'idéal et un petit script sql qui exécute les commandes les unes à la suite des autres: création de la table externe, injection dans la table interne et destruction de la table externe.

    je sais, c'est assez lourd, mais les performances sont étonnantes, en fait, je n'est jamais rien trouvé de plus rapide et efficace!

    ne pas oublier que tu peux aussi construire une procédure stockée via le script sql pour régler les problèmes de liaisons (jointures) et la distributions/injections des données.

    sinon, comme barbibulle le dit, il y a une foule d'utlitaires sur le net et des progs payants qui font cela très bien.

  5. #5
    Membre régulier
    Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 105
    Points
    105
    Par défaut
    Merci... je ciomprend mieux le fonctionnement des tables externe.

    Le pb c'est que je n'ai pas la main sur le format de fichier....
    C'est un format du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    NOMDETABLE1 03<COL1><COLONNNNNE2><XXXXXXX>....
    NOMDETABLE2 03<COL1><COL2>....
    .
    .
    .
    NOMDETABLEN 03............................
    Les différentes colones sont identifiées par leur position.

    Quel est le séparateur de colonne pour les tables externes ?
    Le hasard ne favorise que les esprits préparés.

  6. #6
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Il n'y a pas de séparateur, c'est un fichier à longueur d'enregistrement fixe.
    Donc les colonnes sont de longueur fixe également.

  7. #7
    Membre régulier
    Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 105
    Points
    105
    Par défaut
    Oui effectivement,
    Enfin si on enléve le fait que j'ai plusieur table différente dans le même fichier.
    Le hasard ne favorise que les esprits préparés.

  8. #8
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Je parlai des tables externes.

    Votre exemple ne me permet pas de déterminer si c'est un fichier à longueur fixe. Mais à première vue je dirais que non. Et donc la solution des tables externes n'est pas envisageable à moins de traiter ce fichier avant.

  9. #9
    Membre régulier
    Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 105
    Points
    105
    Par défaut

    Désolé je n'avais pas compris que tu parlais des tables externes...

    Je pense que j'ai la solution.

    Etant donné que le volume d'information n'est pas trés important qq centaines de lignes.

    je vais faire un petit script en bash, pour mettre en forme les données.
    J'aurais donc N fichiers plats avec des longueur d'enregistrement fixe.
    Dans chacun des fichier je rajoute les CR/LF en fin de ligne.

    Je pourrai ensuite charger mes données dans FB au moyen de N tables externes.
    Le hasard ne favorise que les esprits préparés.

  10. #10
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut
    pour rappel, le cr/lf en fin de ligne ne sert à rien lorsque le fichier est "connecté" à une table externe de firebird/interbase mais facilite la lecture en cas de doute.

    donc si tu place un cr/lf en fin de ligne(enregistrement) pense à l'ajouter dans la description de la table externe, sans cela , tu aura à chaque enregistrement un décalage de 2 caractères...

    mais tu t'en rendra compte assez vite...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/02/2010, 20h41
  2. Impossible d'installer Sql loader (sqlldr) pour Oracle windows
    Par 2beornot2be dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 21/04/2008, 14h52
  3. Réponses: 2
    Dernier message: 06/09/2007, 13h17
  4. Documentation pour sql*Loader ?
    Par joseph_p dans le forum SQL
    Réponses: 5
    Dernier message: 13/07/2006, 16h04
  5. Un générateur de Control File pour SQL*Loader ?
    Par lex0072 dans le forum Oracle
    Réponses: 7
    Dernier message: 21/10/2005, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo