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 Procédural MySQL Discussion :

Exporter plusieurs champs d'une base MySQL dans un fichier plat en respectant les tailles des champs


Sujet :

SQL Procédural MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Points : 96
    Points
    96
    Par défaut Exporter plusieurs champs d'une base MySQL dans un fichier plat en respectant les tailles des champs
    Bonjour,

    je dois réaliser un script qui va exporter plusieurs champs d'une table mysql ,et mettre le résultat dans un fichier plat (chaque ligne représente un client).et chaque champ doit se concaténer dans la ligne après l'autre champ
    est c'est faisable en utilisant SQL*loader ou bien il y a d'autres moyens plus simples.

    Merci pour votre aide.

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 344
    Points : 18 919
    Points
    18 919
    Par défaut
    Salut karimoscapitated .

    Oui, c'est faisable. Je donne un exemple, à vous de l'adapter.
    Voici une table Mysql avec jeu d'essai :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    COMMIT
    --------------
     
    --------------
    DROP TABLE IF EXISTS `sample`
    --------------
     
    --------------
    CREATE TABLE `sample` (
            `Id`       smallint UNSIGNED NOT NULL AUTO_INCREMENT Primary Key,
            `Intitule` char(20)          NOT NULL DEFAULT ' '
    )       ENGINE=InnoDB
            DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
            ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT IGNORE INTO `sample` (`Intitule`) value
    ('un'),('deux'),('trois'),('quatre'),('cinq'),
    ('un'),('deux'),('trois'),('quatre'),('cinq'),
    ('un'),('deux'),('trois'),('quatre'),('cinq')
    --------------
     
    --------------
    COMMIT
    --------------
     
    --------------
    select *
    from `sample`
    --------------
     
    +----+----------+
    | Id | Intitule |
    +----+----------+
    |  1 | un       |
    |  2 | deux     |
    |  3 | trois    |
    |  4 | quatre   |
    |  5 | cinq     |
    |  6 | un       |
    |  7 | deux     |
    |  8 | trois    |
    |  9 | quatre   |
    | 10 | cinq     |
    | 11 | un       |
    | 12 | deux     |
    | 13 | trois    |
    | 14 | quatre   |
    | 15 | cinq     |
    +----+----------+
     
     
    Appuyez sur une touche pour continuer...
    Je désire récupérer la totalité de ma table sous forme d'un fichier séquentiel au format ".csv".
    Voici l'exécution pour produire le fichier de type ".csv" :
    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
    Heure Début : 13:55:58,36
     
    --------------
    SHOW VARIABLES LIKE "secure_file_priv"
    --------------
     
    +------------------+-------+
    | Variable_name    | Value |
    +------------------+-------+
    | secure_file_priv |       |
    +------------------+-------+
    --------------
    SELECT *
       INTO OUTFILE 'E:\\22.MySql\\41.Unload\\Ex_01\\fichier.txt'
       FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'
       LINES  TERMINATED BY '\n'
    FROM `sample`
    --------------
     
     
    Heure Fin ..: 13:55:58,40
     
    Appuyez sur une touche pour continuer...
    Assurez-vous que dans votre fichier "my.ini" (si vous êtes sous windows), que vous n'avez pas renseigné la directive "secure_file_priv".
    Si c'est le cas, mettez cette directive en commentaire et relancez votre serveur MySql.

    Et voici maintenant, le contenu du fichier "fichier.txt" :
    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
    "1","un"
    "2","deux"
    "3","trois"
    "4","quatre"
    "5","cinq"
    "6","un"
    "7","deux"
    "8","trois"
    "9","quatre"
    "10","cinq"
    "11","un"
    "12","deux"
    "13","trois"
    "14","quatre"
    "15","cinq"
    Peut-on connaitre l'usage que vous allez faire de ce fichier ? Par exemple l'exploiter sous Excel.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Membre régulier
    Homme Profil pro
    Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Points : 96
    Points
    96
    Par défaut
    salut Artemus24,

    Merci pour votre réponse pertinente.

    je vais essayer d'adapter le script que vous m'avez envoyé ,et je vous tiendrai au courant .

    concernant le fichier : "my.ini" :la directive "secure_file_priv" n'est pas déclarée dans mon cas.

    à la fin pour répondre à votre question concernant l'usage de ce fichier,c'est qu'il va être exploité par une autre entité pour l'injecter dans leurs système ,car dans la partie sélection depuis la table ,je dois sélectionner seulement des données bien précises ,pas la totalité des données de la table.

    Merci pour votre réponse ,je vous tiendrai au courant cet après midi concernant le traitement si ça marche .

    Bon après-midi.

  4. #4
    Membre régulier
    Homme Profil pro
    Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Points : 96
    Points
    96
    Par défaut
    Bonjour,
    j'ai oublié de vous précisez que je souhaite placer tous ces traitements dans un fichier .bat pour le lancer et qu'il génére le fichier txt

    donc je dois avoir qqch comme ça ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    @echo off 
    c/xampp/mysql/bin/mysqldump -h localhost -u root -B agencedirect >
     
    --------------
    SELECT *
       INTO OUTFILE 'C:\\Users\\belkaika\\Desktop\\fichierGenere.txt'
       FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'
       LINES  TERMINATED BY '\n'
    FROM `questionnaire`
    --------------
     
    pause

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 344
    Points : 18 919
    Points
    18 919
    Par défaut
    Salut karimoscapitated.

    Citation Envoyé par karimoscapitated
    j'ai oublié de vous précisez que je souhaite placer tous ces traitements dans un fichier .bat pour le lancer et qu'il génére le fichier txt
    Oui, c'est faisable mais comme vous le faite.
    D'ailleurs, ça tombe bien, les tests que je fais sont en ligne de commande sous windows mais au travers du batch.

    L'astuce que j'utilise, c'est de mettre le batch sous un nom (peu importe son nom) et de donner au script ".sql" le même nom que le batch.
    Du coup, vous avez un batch de nom "lancer.bat" et aussi un script MySql de nom "lancer.sql".

    Voici le contenu de mon fichier batch :
    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
    @echo off
     
    setlocal enableDelayedExpansion
     
    chcp 1252 > nul
     
    set PATH=.;%WAMPSERVER%\bin\mysql\%MYSQL%\bin\;%PATH%
     
    SET FIC=%~nx0
    SET FIC=%FIC:bat=sql%
     
    mysql < %FIC%  --verbose  --force
    @echo.
    pause
    exit
    Comprenez-vous comment j'ai procédé ?
    Sinon faites le test.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #6
    Membre régulier
    Homme Profil pro
    Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Points : 96
    Points
    96
    Par défaut
    Salut Artemus24,

    Donc si j'ai bien compris ,vous placez le traitement sql dans un fichier et vous l'appelez depuis le fichier .bat,c'est bien cela j'espère.

    sinon pour mettre le résultat de l'exécution dans un fichier plat ,il faudra ajouter
    > resultat.txt
    est ce que c'est bien cela ?

    Merci infiniment monsieur.

  7. #7
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 344
    Points : 18 919
    Points
    18 919
    Par défaut
    Salut karimoscapitated.

    Oui dans les deux cas.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/12/2015, 18h52
  2. Récuperer les noms des champs d'une table mysql
    Par seanbean dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/04/2011, 14h37
  3. Réponses: 9
    Dernier message: 19/06/2008, 13h19
  4. Réponses: 2
    Dernier message: 14/05/2007, 10h40
  5. Export d'une base MySQL vers un fichier texte UTF-8
    Par zian974 dans le forum Outils
    Réponses: 2
    Dernier message: 28/08/2006, 21h36

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