2012-04-23 13 views
31

Estoy tratando de guardar un resultado de consulta de aproximadamente 1,000,000 de registros en MySQL Workbench.Exportación de resultados de consulta en MySQL Workbench más allá de 1000 registros

Cuando ejecuto SELECT, solo aparecen 1000 registros (límite predeterminado de MySQL Workbench). Sé que puedo cambiar el límite o eliminar el límite, pero no quiero que se carguen 1.000,000 de registros en el panel de resultados (¿qué podría bloquear mi computadora?), Pero sí quiero guardar los resultados en un archivo.

¿MySQL Workbench le permite guardar los resultados de una consulta directamente en un archivo? ¿O guardar todo el conjunto de resultados en lugar de los 1,000?

+1

También podría escribir un script PHP que haga la consulta, y las salidas a CSV, pero eso podría bloquear mi servidor también, ¿no? Si fopen() para anexar, ¿un archivo enorme será problemático? –

+0

No estoy familiarizado con Workbench, pero podrías escribir un script para obtener 1000 registros a la vez, solo ajustando el desplazamiento cada vez (es decir, el tiempo de la primera vez 'LIMIT 0,1000', la segunda vez 'LIMIT 1000,1000', luego 'LIMIT 2000,1000', etc ...), añadiendo los resultados cada vez a un archivo. No es necesario mantener todos los millones de registros en la memoria, o intentar escribirlos todos de una vez en el archivo. –

+0

La otra complicación es que la consulta en sí tiene que hacer referencia a otros registros. Hace una SUMA() y verifica SUM con un HAVING antes de permitir que el registro esté en el conjunto de resultados.De modo que primero necesito procesar todo el conjunto de datos y luego enviarlo. –

Respuesta

30

Es posible cambiar el límite de la fila del resultado de la consulta o eliminar el límite por completo.

  1. Ir a Editar Preferencias → → editor de SQL (pestaña). Si no puede encontrar Query Results, vaya a Consultas SQL (pestaña) en su lugar.

  2. Busque el resultados de la consulta sección y quite la marca de las filas límite casilla

  3. Haga clic en OK .

  4. Vuelva a ejecutar su consulta.

+15

* "Estoy intentando guardar un resultado de consulta de aproximadamente 1,000,000 de registros" * En este caso, no creo que eliminar el límite sea el curso de acción correcto. – vbence

+7

En MySQL Workbench 5.2, movieron la opción * Filas de límite * de 'Editor SQL' a la pestaña 'Consultas SQL'. –

+1

'Editar'>' Preferencias'> 'SQL Editor'>' SQL Execution' en MySQL Workbench 6.3 en Ubuntu Linux – tenCupMaximum

37

LOAD DATA INFILE tiene un hermano llamado SELECT ... INTO OUTFILE. Se puede utilizar como:

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

Este método no utilizará recursos innecesarios en la interfaz de usuario.

Como @florian señaló: Sin embargo, creará el archivo de salida en el servidor de la base de datos, no en la máquina del cliente.

También tenga en cuenta que los marcos de seguridad de SELinux como o AppArmor podría prevenir MySQL desde la escritura de archivos fuera de las bases de datos estándar carpeta. Si experimenta permisos denegados errores, aunque el usuario puede escribir en el directorio mysql, es probable que sea uno de estos.

+0

Si el problema de permisos, fui con esta opción https://dev.mysql.com/doc/refman/5.5 /en/cannot-create.html – vsingh

2

Simplemente agregue 'limit $ number' agregue la cláusula SQL. si no agrega límite, las líneas devueltas por defecto son 1000.

+0

Esto no responde a la pregunta – Bowdzone

+1

Funciona para mí, agrega el límite a un número grande y luego devuelven todas las filas y puedes exportarlas. – dweebo

Cuestiones relacionadas