with headers mysql csv export numbers

headers - Convierte los resultados de la consulta de MySQL a CSV(con copiar/pegar)



select export mysql (6)

A menudo trabajo en la línea de comando mysql. Una necesidad común es tomar los resultados de una consulta e importarlos en un documento de Números (similar a un documento de Excel).

¿Cuál es el método más rápido para hacer esto?

Método 1: Seleccione en archivo externo

Puede seleccionar un archivo directo directamente desde MySQL, pero esto requiere varios pasos.

  1. Exporte su consulta con todos los argumentos necesarios para que sea un formato CSV, como FIELDS OPTIONALY ENCLOSED BY DELIMITED BY Y DELIMITED BY .
  2. sftp en el servidor y tomar el archivo
  3. eliminar el archivo del servidor

Método 2: copiar / pegar

Tiendo a hacer este método. Para mí parece un poco más rápido, pero eso se debe principalmente a que no recuerdo cómo construir la consulta SELECT INTO OUTFILE desde arriba y tengo que buscarla.

  1. Copie / pegue en un archivo de texto local
  2. Abrir en un editor de texto y reemplazar | con ,
  3. Guarde como un CSV y ábralo en Números.

¿Qué tal esto?:

mysql -b -e "$ MY_QUERY"> my_data.csv

El formato de salida está separado por tabuladores en lugar de por comas, pero al menos Excel y OpenOffice Calc se adaptan automáticamente a esto.

Por cierto, para mayor comodidad y para permitir la ejecución no interactiva de comandos mysql, recomiendo encarecidamente la configuración de un archivo seguro ~ / .my.cnf
(legible solo por ti) con entradas como esta:

[client] user=YOUR_MYSQL_USER_NAME password=YOUR_MYSQL_PASSWORD host=YOUR_MYSQL_SERVER port=YOUR_MYSQL_SERVER_PORT WHATEVER_OTHER_OPTIONS_YOU_LIKE

Referencias

http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html

--batch, -B

Imprima los resultados usando la pestaña como el separador de columnas, con cada fila en una nueva línea. Con esta opción, mysql no usa el archivo de historial.

El modo por lotes da como resultado un formato de salida no tabular y el escape de caracteres especiales. Escapando puede ser deshabilitado usando el modo raw; vea la descripción de la opción --raw.


Excel tiene una función de Text to Columns en el menú Data que le permite especificar un delímetro personalizado. Supongo que Numbers tendría una funcionalidad similar. Si lo hace, entonces la solución es copiar y pegar directamente en su documento Numbers y luego convertir esas celdas de texto a columnas especificando | como el delimitador


Puede ejecutar una consulta SELECT ... INTO OUTFILE en su computadora local y hacer que guarde el archivo localmente. Si tiene instalada la utilidad de línea de comandos mysql * localmente, simplemente agregue el indicador -h <ip-address> para conectarse a un host específico. mysql también puede leer desde la entrada estándar, para que pueda configurar un archivo .sql que usará para importar.

Archivo SQL ( outfile.sql ):

SELECT * FROM myTable WHERE date>CURDATE() INTO OUTFILE ''/home/me/outfile.csv'' -- Specify output file (if Windows, make sure -- to use backslashes and escape them -- (C://Users//<user>//...) FIELDS OPTIONALLY ENCLOSED BY ''"'' ESCAPED BY ''"'' -- Results in double quotation marks, which I have found Excel -- requires (instead of using a backslash to escape) TERMINATED BY ''//n'' -- or your line ending of choice -- (i believe escaping is required)

Luego emitirías el siguiente comando:

mysql -u <user> -p -h <server_ip_address> <outfile.sql

Tenga en cuenta que podría ser una buena idea crear un nuevo usuario que se pueda conectar desde su dirección IP remota, con permisos FILE y solo SELECT acceso a las tablas que necesita consultar.

Inicialmente se trata de un poco de configuración, pero al final, puede simplemente pegar el comando mysql en un archivo por lotes y hacer que sea un proceso de dos clics.

* Creo que tienes que descargar el sistema completo MySQL, que viene con la CLI de mysql .


Su opción 1 es la mejor, creo. Hágalo una vez e imprima las opciones correctas o incluso mejor, cree una pequeña secuencia de comandos que acepte una consulta y agregue automáticamente sus opciones de encuadernación y delimitador favoritas.

También puede omitir los pasos 2 y 3 si instala la utilidad del cliente mysql para su plataforma cliente y, si es posible, conéctese directamente al servidor mysql desde su estación de trabajo.


También puede usar la utilidad de línea de comandos mysql con la opción -e y canalizar la salida a un archivo. Esto generará datos en formato delimitado por tabuladores.


Usa tu primer método con la siguiente modificación:

En lugar de ejecutar el comando en el servidor, puede ejecutarlo en su máquina local y guardar el archivo directamente, sin la necesidad de sftp y eliminarlo. Para eso, tiene que enviar el puerto mysql a un puerto libre en su máquina local.

ssh -L 3306:localhost:3306 user@remoteserver

El primer "3306" es el puerto en la máquina local. "localhost" hace referencia al nombre de host remoteservers. El segundo "3306" es el puerto en la máquina remota, que se reenviará. Si el servidor MySQL se ejecuta en un puerto diferente, debe usar ese puerto. Después de iniciar sesión, mantenga la sesión ssh abierta todo el tiempo que desee.

En una nueva ventana de terminal, puede iniciar su sesión de MySQL.

mysql -hlocalhost -uUser -p --port=3306

Este método tiene la ventaja de que no tiene que exponer su servidor MySQL a Internet y está transfiriendo todos los datos a través de un túnel cifrado.