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

Requêtes et SQL. Discussion :

Requete sur données brutes


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Points : 100
    Points
    100
    Par défaut Requete sur données brutes
    Bonjour,

    Je donne ici un exemple de ce que je désirerai faire:

    J'ai une 4 tables contenant un seul champ (255 char) qui est en fait l'importation de plusieurs fichiers textes (PERE.txt,MERE.txt,GARCON.txt et FILLE.txt). leur contenu est du type:

    Fichier PERE.txt: MERE.txt etc....
    "JEAN 40 " "JULIE 35 "
    "PIERRE 18 " "MICHELE 20 "
    "VINCENT 17 " "LUCIE 13 "
    .... ....
    La position des 2 éléments est fixe (pas de tab)

    Je voudrais inclure tous les enregistrements de ces 4 tables dans une table T1
    ayant la structure suivante:
    Membre nom age
    P JEAN 40
    M LUCIE 13
    G HENRI 5
    ....
    Le champ "Membre" étant le code de "provenance" (P pour PERE.txt etc...)

    Sachant qu'il y a pas mal d'enregistrements dans chaque table provenance (il y en a plus que cela), y-a-t-il une requete SQL me permetytant de réaliser cela ou dois-je passer par du vba et inserer enregistrement par enregistrement ?

    Merci de votre attention.

    Olivier

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    J'ai une 4 tables contenant un seul champ
    Essaie d'être plus clair, j'ai pas tout compris.

    La position des 2 éléments est fixe (pas de tab)
    Qu'entends tu par fixe ?
    Toujours le même nombre de caractères ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je pense avoir compris, il te faut une requête UNION, fais des recherches sur le forum tu auras des exemples d'application.

    Starec

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par Heureux-oli
    Essaie d'être plus clair, j'ai pas tout compris.


    Qu'entends tu par fixe ?
    Toujours le même nombre de caractères ?
    J'ai 4 fichiers texte qui ont n lignes de disons 50 caracteres. Chacune de ces lignes contient le même type de contenu du genre:
    nom: BONARD age: 40
    nom: HUBERT age: 35

    "nom:" et "age:" seront toujours à la même place dans la ligne (caracteres 1 à 4 pour "nom:" et 25 à 28 pour "age:"). Leur variables (BONARD, 40) seront aussi à la même place (5 à 24 et 29 à 50). Si je devais faire en code VB je ferai:
    Nom$=MID$(ligne,5,19) et Age$=MID$(ligne,29,3)

    Donc au final je voudrais importer ces n fichiers dans une seule table qui aurait la structure suivante:
    Provenance,Nom,Age
    Provenance étant un code indiquant de quel fichier texte chaque enregistrement provient.
    Nom et Age étant l'extraction des variables de chaque ligne.

    J'espère avoir été plus clair.

    Merci

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    La fonction que tu propose en VB existe en VBA.

    Va te donner le nom de la personne.

    Tu fais la même chose pour l'âge.

    tout ça dans une requête ajout.

    Tu vas alors avoir les données dans une seule table.

    Par type de fichier, il te suffit dans un champ d'ajouter la lettre P;M;C;Z.

    Si tu utilise l'éditeur de requête QBE, c'est plus facile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nom : Mid([ligne], 5 , 19)
    Et tu auras un champ Nom dans la table qui contiendra les noms

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par Heureux-oli
    La fonction que tu propose en VB existe en VBA.

    Va te donner le nom de la personne.

    Tu fais la même chose pour l'âge.

    tout ça dans une requête ajout.

    Tu vas alors avoir les données dans une seule table.

    Par type de fichier, il te suffit dans un champ d'ajouter la lettre P;M;C;Z.

    Si tu utilise l'éditeur de requête QBE, c'est plus facile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nom : Mid([ligne], 5 , 19)
    Et tu auras un champ Nom dans la table qui contiendra les noms
    J'ai fait 1 premiere requete Q1 avec UNION :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT "P",Ligne FROM PERE_Import
    union
    SELECT "M",Ligne FROM MERE_Import
    union
    SELECT "F",Ligne FROM FILLE_Import
    union
    SELECT "G",RawLOTE FROM GARCON_Import
    puis je fais une requete Q2 avec APPEND:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO T1 ( Provenance, Nom, Age )
    SELECT Q1.Expr1000, Mid$([Ligne ],5,19) AS Expr1, Mid$([RawLOTE],34,3) AS Expr2 FROM Q1;
    Et ça marche trés bien. Merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/03/2007, 23h26
  2. [MySQL] Requete sur 2 bases de données differentes.
    Par gregb34 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/10/2006, 00h06
  3. Requete sur 2 bases de données ?
    Par Arvulis dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 04/08/2006, 17h43
  4. Réponses: 2
    Dernier message: 10/11/2005, 17h59
  5. Requete sur 2 bases de donneés à partie d'un composant ADO
    Par Brice Yao dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/09/2005, 17h26

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