Pregunta ¿Cómo puedo cargar un archivo sql.gz en mi base de datos? (importador)


Estoy tratando de importar un archivo gzipeado de SQL en mysql directamente. ¿Es este el camino correcto?

mysql -uroot -ppassword mydb > myfile.sql.gz

118
2018-05-03 07:06


origen


Incluso ignorando el lado gzip de la pregunta, tu flecha apunta de manera incorrecta ... - Matt Fletcher


Respuestas:


zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database

> escribirá la salida de la mysql comando en stdout en el archivo myfile.sql.gz que probablemente no es lo que quieres. Además, este comando le pedirá la contraseña del usuario "MySQL" de MySQL.


186
2018-05-03 07:10



Como buena práctica de seguridad, pondría mi contraseña en la línea de comandos, dejaría que mysql la solicite. - Prof. Moriarty
O incluso mejor: crear ~/.my.cnf con las credenciales. ;) - joschi
Como @Prof. En las explicaciones de Moriarty, puede modificar el comando para no usar la contraseña a través de zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database. Sabrá que el último parámetro es la base de datos que desea utilizar, no su contraseña. - bafromca
Para corregir un poco el comentario de @Materialty, una buena práctica de seguridad sería no ponga mi contraseña en la línea de comandos (donde se almacenará en el historial o se verá por encima de su hombro) y deje que MySQL la solicite. La marca -p solo hará que MySQL pregunte en un mensaje para la contraseña. - George
+1 por algo que deja el maldito volcado de base de datos comprimido - Dmitri DB


Para mostrar una barra de progreso al importar un archivo sql.gz, descargue pv y usa lo siguiente:

pv mydump.sql.gz | gunzip | mysql -u root -p

En CentOS / RHEL, puedes instalar pv con yum install pv.

En Debian / Ubuntu apt-get install pv.

En MAC, brew install pv


66
2017-11-03 19:46



pv También parece estar en los repositorios de Ubuntu (al menos en 12.04 LTS), pero de nuevo debes hacerlo. sudo apt-get install pv para conseguirlo. Gracias Banjer, esto es perfecto para grandes importaciones de bases de datos! - toon81
Tuve que ejecutar pv mydump.sql.gz | gunzip | mysql -u root my_database_name. Eso fue porque estaba importando tablas y no tengo una contraseña establecida para mi usuario root - Cristiano Mendonça
En MAC, brew install pv - score


La forma más sencilla es descomprimir el archivo de base de datos antes de importar. También como lo menciona @Profe. Moriarty no debe especificar la contraseña en el comando (se le pedirá la contraseña). Este comando tomado de webcheatsheet descomprimirá e importará la base de datos de una sola vez:

gunzip < myfile.sql.gz | mysql -u root -p mydb

47
2017-11-22 15:51



Además, mydb debe crearse antes de importar. Esto no crea el db para ti. - Siddhartha
encontré mi tubería gunzip en un archivo comprimido de 10GB causó que mi importación se congelara. No estoy seguro de si eso se debe a limitaciones de memoria o algo así, pero me equivocaría al hacer un paso a la vez en el futuro. - Ryan Tuck
@RyanTuck Eso está empujando los límites de este tipo de procesos :) - icc97
@Siddhartha Eso depende del archivo de volcado de SQL. A veces incluyen crear declaraciones de base de datos. - rooby
@rooby que tiene sentido. - Siddhartha


Si recibe un error de zcat, en el que el mensaje de error contiene el nombre del archivo con un sufijo adicional .Z, luego intenta usar gzcat en cambio, como se describe en https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly


10
2017-07-08 13:59





También verifique si hay alguna declaración USE en el archivo SQL. La especificación de la base de datos en la línea de comandos no garantiza que los datos terminen allí si se especifica un destino diferente dentro del archivo SQL.


3
2018-05-03 11:28



Solo necesitas extender el comando así: pv mydump.sql.gz | gunzip | mysql -u root -p  your_database. La respuesta aceptada utiliza este enfoque. - bafromca


En macOS, usé esto:

zcat < [Database].sql.gz | mysql -u root -p [Database Name in MySQL]

Ingrese su contraseña, y listo!


3
2017-11-28 07:41





por bzip2 archivos comprimidos (.sql.bz2), use:

bzcat <file> | mysql -u <user> -p <database>

O

pv <file> | bunzip2 | mysql -u <user> -p <database>

para ver la barra de progreso.


1
2017-08-01 15:25





Puedes usar -c, --stdout, --to-stdout opción de gunzip mando

por ejemplo:

gunzip -c file.sql.gz | mysql -u root -p database

0
2017-09-16 06:03