2010-06-17 5 views
0

J'utilise le sql ci-dessous dans un script php:CHARGE DATA INFILE ne fonctionne pas avec FIELDS TERMINATED BY

$sql1 = "LOAD DATA LOCAL INFILE 'test1.csv' INTO TABLE number1 (order_num,pname)"; 
$sql2 = "LOAD DATA LOCAL INFILE 'test1.csv' INTO TABLE number1 (order_num,pname) FIELDS TERMINATED BY ':'"; 
if ($result = $mysqli->query($sql)) { 
    printf("<br>Section 4: %s",$mysqli->error); 
    printf("|$result|$table"); 
} else { 
    printf("<br>Section 5: %s",$mysqli->error); 
} 

Si je $sql1 il apporte bien 3 lignes dans la db (ne les brise pas en champs appropriés). Aucune erreur renvoyée Si j'utilise $sql2 renvoie un message:

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FIELDS TERMINATED BY ':'.."

J'ai essayé un ordre différent, en utilisant avec elle ENCLOSED BY/au lieu de .. Tout ce que je peux penser. Quelqu'un a une suggestion?

Répondre

5

Vérifiez la documentation ... La déclaration sur le terrain doit venir après les champs terminés par une déclaration:

$sql2 = "LOAD DATA LOCAL 
      INFILE 'test1.csv' 
      INTO TABLE number1 
      FIELDS TERMINATED BY ':' 
      (order_num,pname)"; 
+0

Oui, j'ai campé sur cette page toute la nuit. Pourrais avoir juré j'ai essayé cette variation .. Travaux, merci pour une réponse rapide. – integris

+0

J'ai essayé de déboguer ma déclaration pendant une heure et je lisais la documentation à plusieurs reprises. Je ne peux pas croire que j'ai manqué cela, j'avais exactement le même problème. Je pensais juste que je posterais un commentaire en disant merci. – Foo

-1

Yep le (order_num, pname) est invalide, il y a une syntaxe différente pour les champs de mappage de noms de colonnes.

+0

C'est valide (c'est ce que les docs montrent au moins, et ce n'est pas d'où vient l'erreur) ... – ircmaxell

+0

Comme vous l'avez dit il va à la fin - pas où il l'avait si erreur de syntaxe. – Khorkrak

Questions connexes