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

PHP & Base de données Discussion :

Importer un fichier txt comprenant un '\' comme séparateur de champs [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 9
    Par défaut Importer un fichier txt comprenant un '\' comme séparateur de champs
    Bonjours à tous,

    je cherche à importer les données se trouvant dans un fichier txt dont le séparateur de champs est l'antislash '\' en utilisant LOAD DATA INFILE dans un script PHP.

    1) si j'utilise phpmyadmin l'instruction suivante fonctionne parfaitement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LOAD DATA INFILE 'monfichier.txt' REPLACE INTO TABLE matable FIELDS TERMINATED BY '\\' ESCAPED BY '<' IGNORE 1 LINES

    je choisis le caractère '<' comme caractère d'échappement puisque l'antislash est celui par défaut.

    2) si je demande à phpmyadmin de générer le code php il me donne le résultat suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "LOAD DATA INFILE \'monfichier.txt\' REPLACE INTO TABLE matable FIELDS TERMINATED BY \'\\\\\' ESCAPED BY \'<\' IGNORE 1 LINES";
    3) si j'insère ce code dans mon script php j'ai le message d'erreur suivant:

    ErreurYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'monfichier.txt\' REPLACE INTO TABLE matable FIELDS TERMINATED BY \'\\\' ESCAPED B' at line 1

    je précise que l'instruction 1) ne fonctionne pas non plus.

    Voici mon script:
    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
     
    <?php
    $link = mysql_connect("localhost","user","passwd");
    if (!$link)
    {
    die('Non connecté : ' . mysql_error());
    } 
     
    $db = mysql_select_db('competition', $link);
    if (!$db)
    {
    die ('Impossible d\'utiliser la base : ' . mysql_error());
    } 
     
     
    $sql = "LOAD DATA INFILE \'monfichier.txt\' REPLACE INTO TABLE matable FIELDS TERMINATED BY \'\\\\\' ESCAPED BY \'<\' IGNORE 1 LINES";
    $result = mysql_query($sql);
    if (!$result)
    {
    die ( 'Erreur' .mysql_error());
    }
    mysql_close($link); 
    ?>
    merci pour votre aide


    # Version du client MySQL: 5.1.37
    # Extension PHP: mysqli
    # PHP Version 5.2.10

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Moi j'aurais plutot vu ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "LOAD DATA INFILE 'monfichier.txt' REPLACE INTO TABLE matable FIELDS TERMINATED BY '\\' ESCAPED BY '<' IGNORE 1 LINES";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 9
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Moi j'aurais plutot vu ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "LOAD DATA INFILE 'monfichier.txt' REPLACE INTO TABLE matable FIELDS TERMINATED BY '\\' ESCAPED BY '<' IGNORE 1 LINES";
    si je mets ça voilà l'erreur que j'obtiens:

    ErreurYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<' IGNORE 1 LINES' at line 1

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut echapper une fois pour php et une fois pour mysql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "LOAD DATA INFILE 'monfichier.txt' REPLACE INTO TABLE texte FIELDS TERMINATED BY '\\\\' ESCAPED BY '<' IGNORE 1 LINES";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 9
    Par défaut
    merci

    c'est effectivement la solution

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/04/2015, 10h54
  2. Réponses: 2
    Dernier message: 26/10/2012, 10h28
  3. Import de fichier TXT
    Par REMACC1 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/08/2007, 14h29
  4. probleme d'import de fichier txt avec des tab
    Par lecureuil dans le forum Access
    Réponses: 4
    Dernier message: 23/08/2005, 19h22
  5. .bat pour l'import de fichier txt dans postgres
    Par pseudomh dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 25/03/2005, 00h02

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