Incluso ignorando el lado gzip de la pregunta, su flecha apunta hacia el lado equivocado ...
Matt Fletcher
Respuestas:
238
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
>escribirá la salida del mysqlcomando stdouten el archivo myfile.sql.gzque probablemente no sea lo que desea. Además, este comando le pedirá la contraseña del usuario "root" de MySQL.
Como buena práctica de seguridad, pondría mi contraseña en la línea de comando, dejaría que mysql la solicite.
Prof. Moriarty
99
O incluso mejor: cree ~/.my.cnfcon las credenciales. ;)
joschi
55
Como @Prof. Moriarty explica que 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
66
Para corregir ligeramente el comentario de @ Prof.Moriarty, una buena práctica de seguridad sería no poner mi contraseña en la línea de comando (donde se almacenará en el historial o se verá por encima del hombro), y dejar que MySQL lo solicite. El indicador -p solo hará que MySQL solicite la contraseña en un mensaje.
George
44
+1 por algo que deja comprimido el volcado de la maldita base de datos
Dmitri DB
82
Para mostrar una barra de progreso al importar un archivo sql.gz, descargue pvy use lo siguiente:
pv mydump.sql.gz | gunzip | mysql -u root -p
En CentOS / RHEL, puede instalar pv con yum install pv.
pvparece estar también en los repositorios de Ubuntu (al menos en 12.04 LTS lo es), pero nuevamente debes hacer eso sudo apt-get install pvpara obtenerlo. 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
marque el
54
La forma más sencilla es descomprimir el archivo de la base de datos antes de importar. También como lo menciona @Prof. Moriarty no deberías especificar la contraseña en el comando (se te pedirá la contraseña). Este comando tomado de webcheatsheet descomprimirá e importará la base de datos de una vez:
Además, mydb debe crearse antes de importar. Esto no crea el db para ti.
Siddhartha
Encontré que mi tubería gunzipen un archivo comprimido de 10 GB hizo 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 el
@RyanTuck Eso está empujando los límites de este tipo de procesos :)
icc97
@Siddhartha Eso depende del archivo de volcado sql. A veces incluyen crear declaraciones de bases de datos.
Compruebe también si hay alguna instrucción USE en el archivo SQL. Especificar la base de datos en la línea de comando no garantiza que los datos terminen allí si se especifica un destino diferente dentro del archivo SQL.
Sólo tiene que extender el comando de esta manera: pv mydump.sql.gz | gunzip | mysql -u root -pyour_database. La respuesta aceptada utiliza este enfoque.
bafromca
1
Para los archivos comprimidos de bzip2 (.sql.bz2), use:
bzcat <file> | mysql -u <user> -p <database>
O
pv <file> | bunzip2 | mysql -u <user> -p <database>
Respuestas:
>
escribirá la salida delmysql
comandostdout
en el archivomyfile.sql.gz
que probablemente no sea lo que desea. Además, este comando le pedirá la contraseña del usuario "root" de MySQL.fuente
~/.my.cnf
con las credenciales. ;)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.Para mostrar una barra de progreso al importar un archivo sql.gz, descargue
pv
y use lo siguiente:En CentOS / RHEL, puede instalar pv con
yum install pv
.En Debian / Ubuntu
apt-get install pv
.En MAC,
brew install pv
fuente
pv
parece estar también en los repositorios de Ubuntu (al menos en 12.04 LTS lo es), pero nuevamente debes hacer esosudo apt-get install pv
para obtenerlo. Gracias Banjer, ¡esto es perfecto para grandes importaciones de bases de datos!brew install pv
La forma más sencilla es descomprimir el archivo de la base de datos antes de importar. También como lo menciona @Prof. Moriarty no deberías especificar la contraseña en el comando (se te pedirá la contraseña). Este comando tomado de webcheatsheet descomprimirá e importará la base de datos de una vez:
fuente
gunzip
en un archivo comprimido de 10 GB hizo 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.Si obtiene un error
zcat
, en el que el mensaje de error contiene el nombre del archivo con un sufijo adicional.Z
, intente usarlogzcat
, como se describe en https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properlyfuente
En macOS, usé esto:
Ingrese su contraseña, y listo!
fuente
Compruebe también si hay alguna instrucción USE en el archivo SQL. Especificar la base de datos en la línea de comando no garantiza que los datos terminen allí si se especifica un destino diferente dentro del archivo SQL.
fuente
pv mydump.sql.gz | gunzip | mysql -u root -p
your_database
. La respuesta aceptada utiliza este enfoque.Para los archivos comprimidos de bzip2 (.sql.bz2), use:
O
para ver la barra de progreso
fuente
Puedes usar la
-c, --stdout, --to-stdout
opción degunzip
comandopor ejemplo:
fuente