Sauter une colonne lors d'un LOAD DATA INFILE

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Sauter une colonne lors d'un LOAD DATA INFILE

par goeb » 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' ...

par Darkbibou » 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)";
						

Sauter une colonne lors d'un LOAD DATA INFILE

par Darkbibou » 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