Insertion complexe de de données provenant d'un fichier txt

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

30 mai 2005, 12:38

D'où viennent les valeurs des champs que tu veux insérer
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

BFH
Eléphant du PHP | 214 Messages

30 mai 2005, 13:55

Ces valeurs viennent du fichier texte que j'insère dans la base. Je desirerais extraire une partie des lignes 2, 7, 9 & 10 afin de les inserer dans la table report.
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

BFH
Eléphant du PHP | 214 Messages

31 mai 2005, 08:48

Maintenant j'ai un problème de syntaxe :
$insert="LOAD DATA INFILE '".$FI."' INSERT INTO TABLE 'item' IGNORE 9 LINES FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n\r' (INum,IPage,IDevice,IGroup,IValue,IID) ";
mysql_query($insert)or die(mysql_error());
ça ma retourne:
Erreur de syntaxe près de 'INSERT INTO TABLE 'item' IGNORE 9 LINES FIELDS TERMINATED BY ';'' à la ligne 1
quelqu'un sait il pourquoi?
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

31 mai 2005, 09:38

C'est normal, il faut mettre IGNORE juste avant la liste des champs comme il faut doubler les anti-slash de \n et \r:
$insert="LOAD DATA INFILE '".$FI."' INSERT INTO TABLE item FIELDS TERMINATED BY ';' LINES TERMINATED BY '\\n\\r' 
IGNORE 9 LINES  (INum,IPage,IDevice,IGroup,IValue,IID) "; 
mysql_query($insert)or die(mysql_error()); 
Syntaxe générale :
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'    [REPLACE | IGNORE]    INTO TABLE tbl_name    [FIELDS        [TERMINATED BY '\t']        [[OPTIONALLY] ENCLOSED BY '']        [ESCAPED BY '\\' ]    ]    [LINES         [STARTING BY '']            [TERMINATED BY '\n']    ]    [IGNORE number LINES]    [(col_name,...)]
Modifié en dernier par sadeq le 31 mai 2005, 11:14, modifié 1 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 09:40

Le ignore 9 lines doit être à la fin de la requete !!!!

J'ai essayé de l'utiliser mais j'ai pas réussi
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

BFH
Eléphant du PHP | 214 Messages

31 mai 2005, 10:44

J'ai ça comme code :
$insert="LOAD DATA INFILE '".$FI."' INSERT INTO TABLE 'item' FIELDS TERMINATED BY ';'
		LINES TERMINATED BY '\\n\\r' IGNORE 9 LINES  (INum,IPage,IDevice,IGroup,IValue,IID) ";
c'est a dire comme sadeq
cela me retourne :
Erreur de syntaxe près de 'INSERT INTO TABLE 'item' FIELDS TERMINATED BY ';' LINES TERMI' à la ligne 1
je ne comprends pas pourquoi!
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

31 mai 2005, 10:46

Tu as jusque quand pour résoudre ton problème ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

31 mai 2005, 11:13

LOAD DATA INFILE '".$FI."' INSERT INTO TABLE 'item'
C'est là le problème : il faut enlever les quotes ce qui donne :
...LOAD DATA INFILE '".$FI."' INSERT INTO TABLE item FIELDS TERMINATED BY ';' ....
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

BFH
Eléphant du PHP | 214 Messages

31 mai 2005, 11:13

Jeudi grand max car je doit commencer les tests pour voir si cela fonctionne vendredi qui vient
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

BFH
Eléphant du PHP | 214 Messages

31 mai 2005, 11:21

Désolé sadeq mais ça ne marche pas!

rappel de ce que j'ai:
$insert="LOAD DATA INFILE '".$FI."' INSERT INTO TABLE item FIELDS TERMINATED BY ','  LINES TERMINATED BY '\\n\\r' IGNORE 9 LINES  (INum,IPage,IDevice,IGroup,IValue,IID) ";
Erreur de syntaxe près de 'INSERT INTO TABLE item FIELDS TERMINATED BY ',' LINES TERMINA' à la ligne 1
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...