par
Ripat » 22 avr. 2012, 10:28
Tout d'abord, je vois un premier problème dans ton fichier CSV, sa première colonne est aussi la clé primaire (et donc unique) de la table cible. Un LOAD DATA INFILE produira une erreur logique de DUPLICATE ENTRY dès que MySQL essayera d'insérer une ligne qui aura le même id_contact que celui de la table. Solution: tu supprimes d'abord la première colonne du ficheir CSV et tu précises à MySQL quelles colonnes importer en omettant, bien sûr, la première colonne . La clé primaire de la table contacts étant en auto-increment, tu n'as pas à l'importer spécifiquement. Le second problème (mineur) est que les lignes du CSV se terminent par un retour ligne exotique, du moins différent de celui par défaut de MySQL. Il faut donc le préciser dans l'instructions SQL.
$sql = "
LOAD DATA INFILE '/chemin/complet/vers/tfi2003_contacts.csv'
INTO table contacts FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n'
(id_cat,societe,titre,nom,prenom,rue,no,cp,localite,region,pays,phone,phone2,fax,email,website,note)
";
mysql_query($sql) or die (mysql_error());
Attention qu'il te faut le *chemin complet* vers le fichier à importer. Selon que tu travailles en local ou sur un serveur distant, il sera différent. Le mieux est d'uploader le fichier à importer dans le répertoire de ton script d'importation et de spécifier le chemin vers ce répertoire avec la variable serveur $_SERVER['DOCUMENT_ROOT'] à laquelle tu ajoutes le répertoire du script.
Tout d'abord, je vois un premier problème dans ton fichier CSV, sa première colonne est aussi la clé primaire (et donc unique) de la table cible. Un LOAD DATA INFILE produira une erreur logique de DUPLICATE ENTRY dès que MySQL essayera d'insérer une ligne qui aura le même id_contact que celui de la table. Solution: tu supprimes d'abord la première colonne du ficheir CSV et tu précises à MySQL quelles colonnes importer en omettant, bien sûr, la première colonne . La clé primaire de la table contacts étant en auto-increment, tu n'as pas à l'importer spécifiquement. Le second problème (mineur) est que les lignes du CSV se terminent par un retour ligne exotique, du moins différent de celui par défaut de MySQL. Il faut donc le préciser dans l'instructions SQL.
[php]
$sql = "
LOAD DATA INFILE '/chemin/complet/vers/tfi2003_contacts.csv'
INTO table contacts FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n'
(id_cat,societe,titre,nom,prenom,rue,no,cp,localite,region,pays,phone,phone2,fax,email,website,note)
";
mysql_query($sql) or die (mysql_error());[/php]
Attention qu'il te faut le *chemin complet* vers le fichier à importer. Selon que tu travailles en local ou sur un serveur distant, il sera différent. Le mieux est d'uploader le fichier à importer dans le répertoire de ton script d'importation et de spécifier le chemin vers ce répertoire avec la variable serveur $_SERVER['DOCUMENT_ROOT'] à laquelle tu ajoutes le répertoire du script.