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

SQL Firebird Discussion :

Importer un lot de données DOC ou XLS


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut Importer un lot de données DOC ou XLS
    Salut !

    Dans mon travail, je reçois des données format doc. A l'heure actuelle, la démarche de migration de ces données à notre SGBDR est totalement manuelle, car il s'agit d'une saisie pure et simple. Afin d'automatiser cette tâche on pense à une requête SQL genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Insert fichier_xls into table (colonne)
    évidemment, dans firebird, cette syntaxe n'existe pas. Donc, ma demande est de savoir s'il est possible de créer un bloc de code comme le fait ibexpert pour insérer ce lot de données sans passer par l'ajout ligne par ligne ?

    Toute proposition est la bienvenue pour une discussion fructueuse. Votre expérience dans le domaine de la migration de données m'aidera à tracer une trajectoire et me pencher sur une solution semi ou totalement automatique.

    Merci par avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 633
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    je dirais que pour un fichier xls ou . doc il faut faire une croix sur la partie automatique , cela aurait été un simple fichier .txt de format fixe on aurait pu envisager la liaison a une "table externe"

    les fichier .doc ou .xls contenant des 'formatages' cette solution n'est pas possible , le seul moyen est de passer par un programme qui :
    - soit fera directement la lecture du document /contrôle /écriture dans la BDD
    - soit fera une lecture du document [contrôle] + création d'un script sql
    puis exécution de ce dernier ou production d'un fichier txt ou csv

    cependant je vais modérer mon propos en ce qui concerne xls avec la version 2.5 de firebird on peut se connecter a plus d'une SGBD , le doute : est-ce possible de se lier a un xls ?


    un peu de lecture

    Importation et exportation massives de données .....
    Can I do multi-database or cross-database queries with Firebird?

  3. #3
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Merci Sergio pour la réponse.

    En lisant tes deux liens, je suis tombé sur un bout de code qui pourrait bien m'avancer. A l'exécution j'ai une erreur de type "parsing error" que je n'arrive pas à résoudre.

    voici le bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     execute ibeblock
       returns (outstr varchar(100))
       as
       begin
        i = 0; (-- Just a counter of inserted records)
        FS = ibec_fs_OpenFile('C:\MyData.csv', __fmOpenRead);
        if (not FS is null) then
        begin
          while (not ibec_fs_Eof(FS)) do
          begin
            s = ibec_fs_Readln(FS);
            ValCount = ibec_ParseCSVLine(Vals, s, ´´, ':', __csvEmptyStringAsNull);
            INSERT INTO Ma_table (ID, FIRST_NAME, LAST_NAME, SEX) VALUES :Vals;
            commit;
            i = i + 1;
          end
          ibec_fs_CloseFile(FS);
        end
     
        outstr = i || ' records inserted into Ma_table';
        suspend;
      end

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 633
    Billets dans le blog
    65
    Par défaut
    Bonjour ,

    Où as tu trouvé ce code ?
    Le parsing erreur vient certainement d'une erreur dans le fichier csv
    quant à la bibliothèque nécessaire est-ce des UDFs ?

  5. #5
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Bonjour !
    Citation Envoyé par SergioMaster Voir le message
    Où as tu trouvé ce code ?
    Parait que le bout de code t'a plu
    En fait c'est un code du help en ligne de Ibexpert.
    Citation Envoyé par SergioMaster Voir le message
    Le parsing erreur vient certainement d'une erreur dans le fichier csv
    Pas du tout, il manquait une ',' je l'ai corrigé mais là j'ai une erreur de type
    conversion error from string "Av".
    "Av" est une colonne de mon fichier csv, malgré que j'ai mis le format nombre qui correspond au type "smallint" de ma table mais j'ai toujours cette erreur.

    J'ai affiché la chaine retournée dans la variable "s" et j'ai eu le bon résultat :
    233;31.08.2013;15;15;245;21;57237;4;0;0;0;0
    Voici le bout de code en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     execute ibeblock
       returns (Resultat varchar(50))
       as
       begin
        i = 0;
        FS = ibec_fs_OpenFile('C:\Partage\curage_chlef.csv', __fmOpenRead);
        if (not FS is null) then
        begin
          while (not ibec_fs_Eof(FS)) do
          begin
            s = ibec_fs_Readln(FS);
            ValCount = ibec_ParseCSVLine(Vals, s, '', ';', __csvEmptyStringAsNull);
            INSERT INTO tb_curage (code_commune, date_curage, nombre_reclamation, nombre_intervention,
                                   lineaire_cure, regard_cure, volume_collecte, dechet_evacue,
                                   pose_conduites, regard_realise, nbr_branchemen_realise, avaloir_cure) VALUES :Vals;
            i = i + 1;
            commit;
          end
          ibec_fs_CloseFile(FS);
        end
        Resultat = i || 'Ligne(s) inséré(s) dans la table tb_curage';
        suspend;
      end
    Le programme s'arrête à la ligne INSERT INTO
    Je continue à chercher cette erreur ..... qui persiste depuis hier

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 633
    Billets dans le blog
    65
    Par défaut
    Ah , je comprends , tu utilises IBExpert !! je pensais qu'il s'agissait d'un cas plus général et uniquement Firebird !


    Contrôle plutôt vals qui est la string après traitement
    et essayes ensuite en direct en remplaçant Vals
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO tb_curage (code_commune, date_curage, nombre_reclamation, nombre_intervention,
                                   lineaire_cure, regard_cure, volume_collecte, dechet_evacue,
                                   pose_conduites, regard_realise, nbr_branchemen_realise, avaloir_cure) VALUES :Vals
    je pense que le problème peut venir de la date

Discussions similaires

  1. Importation des données .txt et .xls vers MySQL
    Par Ammouna1204 dans le forum Documents
    Réponses: 7
    Dernier message: 05/09/2012, 15h00
  2. import données .doc vers mysql
    Par honey0 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 22/08/2011, 14h14
  3. Importer données txt vers xls
    Par kikim78 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/12/2009, 13h22
  4. Importer une base de données de 21Mo
    Par prgasp77 dans le forum Outils
    Réponses: 12
    Dernier message: 17/01/2007, 22h05

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