2012-01-10 30 views
14

Cuando intento ejecutar multilínea MySQL en shellscriptEjecutar MySQL multilínea en shellscript

 
mysql -uroot -ppass mydb <<<EOF 
SELECT * INTO OUTFILE 'table.csv' 
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
FROM mytable limit 1; 
EOF 


es cada error de sintaxis.

 
ERROR 1064 (42000) at line 1: 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 'EOF' at line 1 

¿Cuál es la forma correcta de guiarlo?

Respuesta

10

La sintaxis para bash heredoc es:

COMMAND <<InputComesFromHERE 
... 
... 
... 
InputComesFromHERE 

Así que tienen un extra <.

Para probar, debe poder reemplazar mysql -uroot -ppass mydb SQL con echo y obtener el código SQL exacto como se pretendía.