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:
3) si j'insère ce code dans mon script php j'ai le message d'erreur 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";
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:
merci pour votre aide
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); ?>
# Version du client MySQL: 5.1.37
# Extension PHP: mysqli
# PHP Version 5.2.10
Partager