2010-11-22 59 views
1

Quand je lance la requête suivanteErreur de syntaxe lors de l'utilisation SELECT INTO OUTFILE

SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' 
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    FROM test_table; 

qui est directement à partir de la documentation MySQL, je reçois une erreur de syntaxe. Je n'ai pas de table test_table et je comprends que cette instruction ne fonctionnera pas réellement, mais il ne semble pas qu'elle devrait donner une erreur de syntaxe. Si je reçois une erreur de syntaxe sur quelque chose directement à partir de la documentation MySQL, que se passe-t-il?

C'est la doc que je regarde (5.1): http://dev.mysql.com/doc/refman/5.1/en/select.html

Ceci est ma version MySQL:

mysql Ver 14.14 Distrib 5.1.49, for debian-linux-gnu (i686) using readline 6.1 
+0

Vous essayez d'utiliser un chemin Windows pour OutFile par hasard? Le caractère barre oblique inverse est un caractère d'échappement dans les littéraux de chaîne MySQL. –

+0

Non. J'utilise exactement le code ci-dessus. Bonne pensée, cependant. –

+0

Probablement en raison d'un bug: http://bugs.mysql.com/bug.php?id=58601 par défaut slash workbench "Limite 1000" sur la requête de sélection –

Répondre

0

Ce code fonctionne pour moi.

Au début, j'avais une erreur Unknown table 'test_table' in my_db. Après la création de la table CREATE TABLE test_table (a VARCHAR(255), b VARCHAR(255)), cela a juste fonctionné. Aucune erreur de syntaxe

Edit:

L'exécution de la requête du client de ligne de commande mysql officielle peut éviter les bogues potentiels dans votre client de GUI et de donner des messages d'erreur plus précis.

+0

Donc, si cette syntaxe est en effet correcte, c'est peut-être une sorte de configuration question ou quelque chose. –

+0

Je ne sais pas ce qui se passe, mais essayez d'exécuter cette requête à partir du client de ligne de commande 'mysql'. Ça devrait marcher là-bas. –

+0

Vous avez raison! Ça a marché. Plus précisément, il a donné des messages d'erreur plus appropriés. Connecté en tant que root, cela fonctionne. Connecté en tant que le même utilisateur que j'utilisais avec mon IDE et j'ai un accès refusé, que je sais comment réparer. Merci! –

0

Peut-être que vous devez échapper certains caractères en fonction de la langue que vous utilisez.

exemple php:

$sql = "SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt'" 
    . " FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'" 
    . " LINES TERMINATED BY '\\n'" 
    . " FROM test_table;"; 
+0

Non, je le colle directement dans mon IDE. –

+0

quel IDE utilisez-vous? – stewe

+0

MySQL Workbench. –