importar - exportar tabla mysql a excel php
Exportando tabla MySQL a un archivo csv (5)
Creo que estás buscando algo como esto.
SET @sql = NULL;
SELECT GROUP_CONCAT("''",COLUMN_NAME,"''")
FROM
(SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA` = ''yourdatabasename''
and `TABLE_NAME`=''ffd_companies''
) AS colnames
GROUP BY ''COLUMN_NAME''
into @sql;
SET @sql = concat ("SELECT", @sql, " from dual
UNION ALL
SELECT *
FROM addstock25
INTO OUTFILE ''E://JOSE DATA//addstock7.csv''
FIELDS TERMINATED BY '',''
ENCLOSED BY ''", ''"'',"''
)"
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Espero que esto te ayude.
Nota: agrego la cláusula WHERE TABLE_SCHEMA
= ''yourdatabasename''
Tengo una tabla de MySQL que se debe sacar como archivo csv. La consulta que utilicé es
SELECT "ID","NAME","SALARY","SAL1","SAL2","SAL3","SAL4","SAL5","SAL6","SAL7","SAL8","SAL9","SAL10","SAL11","SAL12","SAL13","SAL14","SAL15","SAL16","SAL17","SAL18","SAL19","SAL20","SAL21","SAL22","SAL23","SAL24","SAL25","SAL26"
UNION ALL
SELECT *
FROM addstock25
INTO OUTFILE "E://JOSE DATA//addstock7.csv"
FIELDS TERMINATED BY '',''
ENCLOSED BY ''"''
LINES TERMINATED BY ''/n'';
Esta consulta funciona, ¿y si tengo 200 nombres de columna? ¿Hay alguna manera de hacerlo sin escribirlo manualmente?
Este comando casi le da lo que quiere, e incluso funciona con un servidor remoto. La única advertencia es que genera archivos TSV (los campos están separados por una pestaña).
mysql mydb -e "select * from mytable" -B > mytable.tsv
Pero puedes convertirlo a CSV usando sed, como se sugiere en esta respuesta
mysql mydb -e "select * from mytable" -B | sed "s/''//'/;s//t//",/"/g;s/^//"/;s/$//"/;s//n//g" > mytable.csv
He integrado el script para código simple basado en UI. Aquí puede ingresar la consulta y simplemente puede obtener el archivo csv que contiene todas las filas, incluidos los nombres de columna.
Este script funciona tanto para Windows como para Linux.
https://github.com/Bihari12/databasetocsv
Esto guardaría el resultado en el archivo csv en la misma carpeta en la que existe el código.
No veo por qué no puedes hacer
SELECT *
FROM addstock25
INTO OUTFILE "E://JOSE DATA//addstock7.csv"
FIELDS TERMINATED BY '',''
ENCLOSED BY ''"''
LINES TERMINATED BY ''/n
?
DESCRIBE addstock25;
Pele la primera columna y la primera entrada 3 de esa columna (depende de su uso). Obtendrá la lista de campos en addstock25.
Esto traerá solo nombres de campos usando tablas virtuales derivadas en el núcleo ... llamado esquema de información.
SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_NAME`=''foo'';
Digamos que el nombre de esta consulta sería sq_fieldnamelist
Entonces, la tabla anterior tiene una columna y tiene los nombres de campo de la tabla "foo".
Si escribo directamente así
SELECT (sq_fieldnamelist)
UNION ALL
SELECT *
FROM addstock25
INTO OUTFILE "E://JOSE DATA//addstock7.csv"
FIELDS TERMINATED BY '',''
ENCLOSED BY ''"''
LINES TERMINATED BY ''/n
Mysql dará un error. "subconsulta devuelve fila múltiple"
Debemos editar sq_fieldnamelist para concat todas las entradas espalda con espalda separadas por comas.
Select GROUP_CONCAT(COLUMN_NAME)
FROM
(SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_NAME`=''ffd_companies''
LIMIT 3,100
) AS fafa
GROUP BY ''COLUMN_NAME'' // this group by is just to make group concat work
Digamos que esto es sq_fieldnamelist2
Si editamos sq_fieldnamelist como este. Solo devolverá un valor, que es todos los nombres de campo separados por comas. Así que ahora podemos colocar esta subconsulta en su declaración de selección para adquirir los campos necesarios.
SELECT (sq_fieldnamelist2)
UNION ALL
SELECT *
FROM addstock25
INTO OUTFILE "E://JOSE DATA//addstock7.csv"
FIELDS TERMINATED BY '',''
ENCLOSED BY ''"''
LINES TERMINATED BY ''/n
Necesita editar LIMIT 3,100 en sq_fieldnamelist2 para su propio propósito.
digamos que su tabla es como fil1, fil2 ... filN, sal1, sal2, sal3 ...., salI para ver los únicos campos de salario que debe usar LIMIT N,x>I+N
Si desea ver todos, utilice LIMIT 0,x>N+I