txt - mysql importar tablas
Cómo exportar/volcar una tabla MySql en un archivo de texto que incluye los nombres de campo(también llamados encabezados o nombres de columna) (5)
En el intérprete de MySQL, es muy fácil descargar una tabla en la pantalla junto con sus nombres de campo.
Parece que no hay una forma sencilla de exportar una tabla a un archivo de salida CSV o delimitado por tabuladores, incluidos sus encabezados de columna.
Estoy tratando de hacer esto utilizando solo SQL o la línea de comandos de Linux, sin escribir un programa en otro idioma.
Gracias
Al pasar la consulta al cliente de la línea de comandos, se genera una lista separada por tabulaciones con los nombres de las columnas como primera línea
$ echo "select * from surveys limit 5" | mysql -uroot -pGandalf surveys
phone param1 param2 param3 param4 p0 p1 p2 p3 audio4 code time
XXXXXXXXX 2008-07-02 11:17:23 XXXXXXXX SAT - - - - - ERROR 2008-07-02 12:18:32
XXXXXXXXX 2008-07-02 11:22:52 XXXXXXXX SAT - - - - - COLGADO 2008-07-02 12:04:29
XXXXXXXXX 2008-07-02 11:41:29 XXXXXXXX SAT - - - - - COLGADO 2008-07-02 12:07:22
XXXXXXXXX 2008-07-02 12:16:19 XXXXXXXX SAT 1 1 1 9 XXXXXXXXX_4.wav OK 2008-07-02 16:14:27
XXXXXXXXX 2008-07-02 08:21:25 XXXXXXXX SAT 1 1 1 1 XXXXXXXXX_4.wav OK 2008-07-02 12:29:40
Puedes hacer esto con el comando mysqldump . Eche un vistazo a las opciones --tab y --xml.
Este pequeño script debería hacerlo:
- 1. elija la tabla y el archivo de salida aquí / esta debería ser la única entrada
select ''mytable'' into @tableName;
select ''c://temp/test.csv'' into @outputFile;
- 2. obtener los nombres de las columnas en un formato que se ajuste a la consulta
select group_concat(concat("''",column_name, "''")) into @columnNames from information_schema.columns
where table_name=@tableName;
- 3. construir la consulta
SET @query = CONCAT(
"select * from
((SELECT ",@columnNames,")
UNION
(SELECT * FROM `",@tableName,"`)) as a
INTO OUTFILE ''", @outputFile, "''");
- 4. ejecutar la consulta
PREPARE stmt FROM @query;
EXECUTE stmt;
Lo logré de esta manera:
echo "select * from table"| mysql database -B -udbuser -puser_passwd | sed s///t/,/g > query_output.csv
La opción -B de mysql separa las columnas por pestañas, que se convierten en comas usando sed. Tenga en cuenta que los encabezados también se generan.
He creado un procedimiento para automatizar la exportación de los contenidos de una gran cantidad de tablas al archivo .csv usando SELECT ... INTO OUTFILE
. Consulte lo siguiente si necesita algo como esto
http://lifeboysays.wordpress.com/2012/06/23/mysql-how-to-export-data-to-csv-with-column-headers/ .
Utiliza el método descrito por cafe876, pero funcionará para una o toda una serie de tablas, además puede establecer el delimitador y el carácter de comillas que se utilizarán.