¿Es posible incluir los encabezados de alguna manera cuando se usa MySQL INTO OUTFILE
?
mysql
into-outfile
Brett
fuente
fuente
ORDER BY
en laSELECT
cláusula. La línea de encabezado puede estar en cualquier lugar del archivo generado según el orden.La solución proporcionada por Joe Steanelli funciona, pero hacer una lista de columnas es inconveniente cuando se trata de decenas o cientos de columnas. Aquí se explica cómo obtener la lista de columnas de la tabla my_table en my_schema .
Ahora puede copiar y pegar la fila resultante como primera declaración en el método de Joe.
fuente
ORDER BY ORDINAL_POSITION
asas queGROUP_CONCAT(CONCAT('"',COLUMN_NAME,'"') order BY ORDINAL_POSITION)
Para la selección compleja con ORDER BY utilizo lo siguiente:
fuente
Puede usar la declaración preparada con la respuesta de lucek y exportar dinámicamente la tabla con el nombre de las columnas en CSV:
Gracias lucek.
fuente
Esto le permitirá tener columnas ordenadas y / o un límite
fuente
Query OK, 100 rows affected (14.72 sec)
Segundo pase con el suyoQuery OK, 101 rows affected (0.00 sec)
Simplemente hago 2 consultas, primero para obtener el resultado de la consulta (límite 1) con nombres de columna (sin código rígido, sin problemas con Joins, Order by, nombres de columna personalizados, etc.), y segundo para hacer la consulta en sí misma y combinar archivos en un CSV expediente:
fuente
Enfrenté un problema similar al ejecutar la consulta mysql en tablas grandes en NodeJS. El enfoque que seguí para incluir encabezados en mi archivo CSV es el siguiente
Utilice la consulta OUTFILE para preparar el archivo sin encabezados
Obtener encabezados de columna para la tabla utilizada en el punto 1
Agregue los encabezados de columna al archivo creado en el paso 1 usando el paquete npm prepend -file
La ejecución de cada paso se controló mediante promesas en NodeJS.
fuente
Este es un truco alternativo si está familiarizado con Python o R, y su tabla puede caber en la memoria.
Importe la tabla SQL a Python o R y luego exporte desde allí como un CSV y obtendrá los nombres de las columnas y los datos.
Así es como lo hago usando R, requiere la biblioteca RMySQL:
Es un poco engañoso, pero descubrí que esta era una solución rápida cuando mi número de columnas era demasiado largo para usar el método concat anterior. Nota: R agregará una columna 'row.names' al comienzo del CSV, por lo que querrá eliminarla si necesita confiar en el CSV para recrear la tabla.
fuente
Entonces, si todas las columnas
my_table
son de un tipo de datos de caracteres , podemos combinar las respuestas principales (por Joe, matt y evilguc) juntas, para que el encabezado se agregue automáticamente en una consulta SQL 'simple', por ejemplodonde las últimas dos líneas hacen que la salida sea csv.
Tenga en cuenta que esto puede ser lento si
my_table
es muy grande.fuente
Creo que si usa UNION funcionará:
No conozco una forma de especificar los encabezados con la sintaxis INTO OUTFILE directamente.
fuente
En realidad, puede hacer que funcione incluso con un ORDER BY.
Solo necesita algunos trucos en el orden por declaración: usamos una declaración de caso y reemplazamos el valor del encabezado con algún otro valor que se garantiza que se clasificará primero en la lista (obviamente, esto depende del tipo de campo y de si está ordenando ASC o DESC)
Digamos que tiene tres campos, name (varchar), is_active (bool), date_something_happens (date), y desea ordenar los dos segundos en orden descendente:
fuente
Dado que la funcionalidad 'include-headers' no parece estar incorporada todavía, y la mayoría de las "soluciones" aquí necesitan escribir los nombres de las columnas manualmente y / o ni siquiera tener en cuenta las uniones, recomiendo solucionar el problema .
La mejor alternativa que encontré hasta ahora es usar una herramienta decente (yo uso HeidiSQL ).
Ponga su solicitud, seleccione la cuadrícula, simplemente haga clic derecho y exporte a un archivo. Tiene todas las opciones necesarias para una exportación limpia, y debería manejar la mayoría de las necesidades.
En la misma idea, el enfoque de user3037511 funciona bien y se puede automatizar fácilmente .
Simplemente inicie su solicitud con alguna línea de comando para obtener sus encabezados. Puede obtener los datos con un SELECT INTO OUTFILE ... o ejecutando su consulta sin el límite, el suyo para elegir.
Tenga en cuenta que la redirección de salida a un archivo funciona a la perfección tanto en Linux como en Windows.
Esto me hace querer resaltar que el 80% de las veces, cuando quiero usar SELECT FROM INFILE o SELECT INTO OUTFILE, termino usando algo más debido a algunas limitaciones (aquí, la ausencia de 'opciones de encabezados', en un AWS-RDS, los derechos que faltan, etc.)
Por lo tanto, no respondo exactamente a la pregunta del operador ... pero debería responder a sus necesidades :)
EDITAR: y realmente responder a su pregunta: no
A partir del 2017-09-07, simplemente no puede incluir encabezados si seguir con el comando SELECT INTO OUTFILE : |
fuente
un ejemplo de mi sensor de nombre de tabla de base de datos con columnas (id, tiempo, unidad)
fuente
Estaba escribiendo mi código en PHP, y tuve un poco de problema al usar las funciones concat y union, y tampoco usé variables SQL, de cualquier manera que lo hice funcionar, aquí está mi código:
fuente
A continuación, se muestra una forma de obtener los títulos de encabezado de los nombres de las columnas de forma dinámica.
fuente
Me gustaría agregar a la respuesta proporcionada por Sangam Belose. Aquí está su código:
Sin embargo, si no ha configurado su
"secure_file_priv"
dentro de las variables, es posible que no funcione. Para eso, verifique la carpeta establecida en esa variable por:La salida debería verse así:
Puede cambiar esta variable o cambiar la consulta para generar el archivo en la ruta predeterminada que se muestra.
fuente
MySQL por sí solo no es suficiente para hacer esto simplemente. A continuación se muestra un script PHP que generará columnas y datos en CSV.
Ingrese el nombre de su base de datos y las tablas cerca de la parte superior.
Necesitará que este sea el directorio al que le gustaría enviar la salida. MySQL debe tener la capacidad de escribir en el directorio.
Puede editar las opciones de exportación de CSV en la consulta:
Al final hay una llamada ejecutiva a GZip el CSV.
fuente
fuente