2012-11-29 4 views
1

J'ai un script bash dans lequel je dirigeais une déclaration MySQL:ligne de commande MySQL sélectionner avec terminaison de champ différent

#!/usr/bin/env bash 

mysql -N --user=foo --password=bar --host=baz -A -D db -e '\ 
    SELECT ... \ 
    FROM fieldA, fieldB \ 
    LIMIT 100' 

Cela fonctionne très bien. Cependant, au lieu du format tabulaire renvoyé, j'aimerais obtenir un résultat délimité par des tabulations.

J'ai essayé ce qui suit, mais il donne une erreur de syntaxe:

#!/usr/bin/env bash 

mysql -N --user=foo --password=bar --host=baz -A -D db -e '\ 
    SELECT ... \ 
    FROM fieldA, fieldB \ 
    LIMIT 100 \ 
    FIELDS TERMINATED BY "\t"' 

L'erreur est:

ERROR 1064 (42000) at line 3: 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 "\t"' at line 10

J'ai essayé aussi

... 
    FIELDS TERMINATED BY \'\t\'' 

Mais je reçois la même erreur .

Existe-t-il un moyen correct de changer le terminateur de champ de ce type de run MySQL? Merci pour vos conseils.

Répondre

2

Selon la page de manuel pour le client mysql:

When used interactively, query results are presented in an ASCII-table format. When used noninteractively (for example, as a filter), the result is presented in tab-separated format.

Votre utilisation de -e fait mysql traiter comme une commande interactive. Mais le client peut également accepter les entrées via stdin. C'est ce que vous voulez:

mysql -N --user=foo --password=bar --host=baz -A db <<-'EOF' 
    SELECT ... 
    FROM fieldA, fieldB 
    LIMIT 100 
EOF 
+0

C'était parfait. J'ai oublié ça. À votre santé. –

Questions connexes