Sauter une colonne lors d'un LOAD DATA INFILE

Eléphant du PHP | 158 Messages

21 mars 2006, 16:35

Bonjour, j'essaye de faire vider puis reremplir une table automatiquement a partir d'un fichier texte grace a un formulaire html pour choisir le fichier et une commande sql load data infile:
// On vide la base avant de la remplir a nouveau
$sql_truncate= "TRUNCATE TABLE $table_a_remplir";
mysql_query($sql_truncate)or die ("Impossible de vider la table");

// On charge les nouvelles données
$sql_all_data= "LOAD DATA INFILE '$chemin_pour_load$nomFichier' INTO TABLE $table_a_remplir FIELDS TERMINATED BY ';' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'";
mysql_query($sql_all_data)or die (mysql_error());
J'ai plusieurs questions:

- J'ai l'impression que \r ou \n sont comptés comme des r ou n protégés et non les marqueur de fin de ligne windows. Quel est la syntaxe correcte pour indiquer la fin de ligne d'un fichier généré sous windows.

- Comment faire pour dire au load data infile de ne remplir ma table avec les données du fichier texte seulement a partir de la deuxieme colonne (La 1ère etant un auto-increment).

Merci d'avance
°°°Darkbibou°°°

Eléphant du PHP | 158 Messages

22 mars 2006, 09:58

Bon evais faire une autoreponse pour la deuxième question mais je ne sais toujours pas pour la première.

Reponse à la deuxième question:
$sql_all_data= "LOAD DATA INFILE '$chemin_pour_load$nomFichier' INTO TABLE $table_a_remplir FIELDS TERMINATED BY ';' ENCLOSED BY '\"' LINES TERMINATED BY '\\r\\n' (nom de chacun des champs qui doivent être remplit par load data (séparés par des virgules et dans l'ordre de remplissage)";
						
°°°Darkbibou°°°

Eléphant du PHP | 413 Messages

22 mars 2006, 15:30

vu sur la doc mysql : http://dev.mysql.com/doc/refman/5.0/fr/load-data.html
""
Note : si vous avez généré le fichier sur Windows, vous devrez peut-être utiliser LINES TERMINATED BY '\r\n' pour lire le fichier correctement, car les programmes Windows utilisent généralement deux caractères comme fin de ligne. Certains programmes, comme WordPad, peuvent utiliser \r comme terminateur de ligne lors de l'écriture. Pour lire ces fichiers, utilisez LINES TERMINATED BY '\r.
""

donc pour toi, je pense qu'il faudrait :
$sql = "... LINES TERMINATED BY '\\r\\n' ..."
ça donnerait une chaîne $sql :
... LINES TERMINATED BY '\r\n' ...
--
Goeb