2011-01-20 17 views
12

Estoy atascado. Básicamente, quiero crear un archivo de datos LOCAL (archivo csv) desde una base de datos remota utilizando el comando OUTFILE.mysql volcar a localhost archivo de una base de datos remota

Básicamente, estoy tirando de datos ... y quiero crearlos en mi servidor de archivos local frente a crear el archivo de salida en el servidor remoto. Estoy limitado en el espacio de forma remota, por lo tanto, quiero crear el archivo localmente. ¿Qué me estoy perdiendo sobre cómo hacer esto? ¡Gracias!

Ésta es mi sintaxis de trabajo hasta ahora en la línea de comandos (que está creando el archivo que quiero, sino en el servidor remoto)

mysql -u test -pfoo --database test -h testdb201.name.host.com --port 3306 -ss -e "SELECT 'a','b','c' UNION SELECT col1, col2, col3 INTO OUTFILE '/tmp/mytest.csv' FIELDS TERMINATED BY ',' FROM tst_p000 limit 10" 
+0

¿Está ejecutando este comando en el servidor remoto o en su servidor local? – Raghuram

+0

no creo que sea posible, ¿tiene ssh de inicio de sesión en el servidor de la base de datos? – ajreal

+0

ejecutando este comando en el servidor local. tengo todas mis claves ssh funcionando correctamente puedo hacer que descargue el archivo, pero está en el servidor remoto. Estoy viendo ahora que OUTFILE es local para el servidor de la base de datos. – jdamae

Respuesta

19

De acuerdo con la MySQL Select syntax, no se puede utilizar para la producción OUTFILE a un archivo fuera del servidor en sí.

Debería convertir el resultado delimitado por tabuladores de la consulta al formato CSV como este (sed command credited here).

mysql -u test -pfoo --database test -h testdb201.name.host.com --port 3306 -ss -e "SELECT 'a','b','c' UNION SELECT col1, col2, col3 " | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > myDump.csv 
+0

dulce! buen truco. Ojalá estuviera bien con sed. Funciona de maravilla. ¡gracias por tu ayuda! – jdamae

+1

¿Pueden ustedes elaborar sobre la sintaxis sed? ¡gracias de nuevo! – jdamae

+1

Imagen del comando sed dividido en cuatro partes, cada una separada por un punto y coma. La primera parte del comando sed reemplaza todas las pestañas con "," (incluidas las comillas). La segunda parte reemplaza todas las líneas iniciales con comillas dobles. La tercera parte reemplaza todas las líneas finales por comillas dobles. La última parte elimina todas las nuevas líneas de la consulta. –

Cuestiones relacionadas