Me gustaría evitar mysqldump ya que genera una forma que solo es conveniente para que mysql lea. CSV parece más universal (un archivo por tabla está bien). Pero si hay ventajas en mysqldump, soy todo oídos. Además, me gustaría algo que pueda ejecutar desde la línea de comandos (linux). Si se trata de un script mysql, los consejos sobre cómo hacer tal cosa serían útiles.
mysql
command-line
csv
backup
dreeves
fuente
fuente
Respuestas:
Si puede hacer frente a tablas a la vez, y sus datos no son binarios, utilice la
-B
opción delmysql
comando. Con esta opción, generará archivos TSV (separados por pestañas) que se pueden importar a Excel, etc., con bastante facilidad:Alternativamente, si tiene acceso directo al sistema de archivos del servidor, use el
SELECT INTO OUTFILE
que puede generar archivos CSV reales:fuente
\. file.sql
lee). Como tal, dependiendo de su instalación, probablemente lo encontrará en/var/lib/mysql/[db_name]/table.csv
En el propio MySQL, puede especificar la salida CSV como:
De http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/
fuente
Puede volcar una base de datos completa de una sola vez con la
mysqldump's --tab
opción. Usted proporciona una ruta de directorio y crea un.sql
archivo con laCREATE TABLE DROP IF EXISTS
sintaxis y un.txt
archivo con el contenido, separados por tabulaciones. Para crear archivos separados por comas, puede usar lo siguiente:Esa ruta debe ser escribible tanto por el usuario de mysql como por el usuario que ejecuta el comando, por lo que, para simplificar, recomiendo
chmod 777 /tmp/path_to_dump/
primero.fuente
mysqldump: You must use option --tab with --fields-...
GRANT FILE ON *.* TO 'user1'@'localhost';
- stackoverflow.com/a/15014385/1707015 . En mi caso, tuve que tomar/var/lib/mysql-files/
(en lugar de/tmp/
), configurar el usuario en mysql: mysql y configurar los derechos en 777 - stackoverflow.com/a/32737616/1707015 .La opción seleccionar en el archivo de salida no funcionaría para mí, pero la siguiente forma indirecta de canalizar el archivo delimitado por tabulaciones a través de SED sí lo hizo:
fuente
t
se reemplazara por", "
en el archivo de salida. No es exactamente lo que buscaba.Aquí está el comando más simple para ello.
Si hay una coma en el valor de la columna, podemos generar .tsv en lugar de .csv con el siguiente comando
fuente
mysql -hlocalhost -uroot -e 'select * from databaseName.tableNaame' | sed 's/\t/,/g' > /tmp/output.csv
`Si realmente necesita una "Copia de seguridad", también necesita un esquema de base de datos, como definiciones de tablas, definiciones de vistas, procedimientos de almacenamiento, etc. Una copia de seguridad de una base de datos no es solo la información.
El valor del formato mysqldump para la copia de seguridad es específicamente que es muy FÁCIL de usar para restaurar bases de datos mysql. Una copia de seguridad que no se restaura fácilmente es mucho menos útil. Si está buscando un método para hacer una copia de seguridad confiable de los datos de mysql para poder restaurarlos en un servidor mysql, creo que debería seguir con la herramienta mysqldump.
Mysql es gratuito y se ejecuta en muchas plataformas diferentes. Configurar un nuevo servidor mysql al que puedo restaurar es simple. No me preocupa en absoluto no poder configurar mysql para poder hacer una restauración.
Me preocuparía mucho más una copia de seguridad / restauración personalizada basada en un formato frágil como csv / tsv que falla. ¿Está seguro de que todas sus comillas, comas o pestañas que están en sus datos se escaparán correctamente y luego se analizarán correctamente con su herramienta de restauración?
Si está buscando un método para extraer los datos, vea varios en las otras respuestas.
fuente
Puede usar el siguiente script para obtener la salida en archivos csv. Un archivo por tabla con encabezados.
usuario es su nombre de usuario, contraseña es la contraseña si no desea seguir escribiendo la contraseña para cada tabla y mydb es el nombre de la base de datos.
Explicación del script: La primera expresión en sed, reemplazará las pestañas con "," por lo que tiene campos encerrados entre comillas dobles y separados por comas. El segundo inserta comillas dobles al principio y el tercero inserta comillas dobles al final. Y el último se encarga del \ n.
fuente
--skip-column-names
en mi versión de mysqlEche un vistazo a mk-parallel-dump, que forma parte del siempre útil conjunto de herramientas maatkit . Esto puede volcar archivos separados por comas con la opción --csv.
Esto puede hacer toda su base de datos sin especificar tablas individuales, y puede especificar grupos de tablas en una tabla de conjunto de respaldo.
Tenga en cuenta que también vuelca las definiciones de la tabla, las vistas y los activadores en archivos separados. Además de proporcionar una copia de seguridad completa en una forma más accesible universalmente, también se puede restaurar de inmediato con mk-parallel-restore
fuente
maatkit
parece ser parte delpercona toolkit
ahora, pero no puedo encontrar las herramientas correspondientes.Respuesta de PowerShell de dos líneas:
Boom-bata-boom
-D
= el nombre de su base de datos-e
= consulta-B
= delimitado por tabuladoresfuente
Si desea volcar toda la base de datos como csv
fuente