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