2012-01-26 8 views
8

necesito exportar datos de una tabla a un csv. Tengo la siguiente estructura (no es realmente mi tabla sino para propósitos de demostración)archivo no encontrado después de la exportación de mysql

CREATE TABLE `mytable` (
    `id` int(11) DEFAULT NULL, 
    `mycolumn` varchar(25) DEFAULT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 

con datos (aproximadamente 3000 registros). ahora quiero exportar algunos de estos registros (de un guión corro a través tarea programada)

SELECT * INTO OUTFILE '/tmp/mytable.sql' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
FROM mytable; 

muestra:

Query OK, 3 rows affected (0.00 sec) 

entonces yo:

ls: cannot access /tmp/mytable.sql: No such file or directory 

donde es mi archivo ?

+1

¿Hay otra ejecución script que borra la carpeta/tmp? –

+0

@CornelGhiban no –

Respuesta

8

Cuando usa el comando INTO OUTFILE, exporta los datos a la carpeta local del servidor, no a la que está ejecutando la consulta.

Ejemplo: usted está en su computadora (ip: 192.168.0.100) y se conecta a mysqlserver (ip: 192.168.0.101) usando el comando mysql: mysql -uuser -h192.168.0.101 -A database. Al ejecutar SELECT * INTO OUTFILE, el archivo se guarda en mysqlserver (ip: 192.168.0.101) y NO en su computadora (ip: 192.168.0.100).

Ahora, puede usar una secuencia de comandos que crea un archivo CSV (en su tarea cron - selecciona todos los datos, genera el archivo y lo envía a través de scp al otro servidor).

O bien, también puede tener un NFS montado en /shared/ y cuando crea el archivo automáticamente, el otro servidor lo tiene.

O bien, simplemente puede ejecutar un comando mysql en un script bash como este desde su primer servidor.

mysql -uroot test -B -e "select * from test.mytable;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > /tmp/filename.csv 

fuente: http://tlug.dnho.net/node/209

+0

¿Alguna solución preferida? –

+1

el NFS es una buena solución si tiene que generar una gran cantidad de datos (como muchos archivos). el "generar un archivo csv" puede ser muy fácil de construir y puede tener personalización (como params, etc ...) la línea de comandos, muy fácil y rápido, pero hay que tener cuidado con los caracteres como comillas dobles, que podrían ser un poco difícil de depurar (con el comando SED). –

+0

veo el archivo en el servidor mysql ahora, nunca adivinaría gracias por su ayuda, creo que iré con la generación de archivos a csv. –

Cuestiones relacionadas