2012-06-10 10 views

Respuesta

47

El archivo es un archivo SQL comprimido (gzipped), casi con seguridad un archivo de texto sin formato con .sql como extensión. Lo primero que hay que hacer es copiar el archivo en el servidor de base de datos a través de SCP .. I think PuTTY's is pscp.exe

# Copy it to the server via pscp 
C:\> pscp.exe numbers.sql.gz [email protected]:/home/user 

Entonces SSH en el servidor y descomprimir el archivo con gunzip

[email protected]$ gunzip numbers.sql.gz 
[email protected]$ ls 

numbers.sql 

Por último, importarlo en su base de datos MySQL utilizando el operador de redirección de entrada <:

[email protected]$ mysql -u mysqluser -p < numbers.sql 

Si el archivo numbers.sql no crea una base de datos, pero exp ECTS uno a estar ya presente, tendrá que incluir la base de datos en el comando así:

[email protected]$ mysql -u mysqluser -p databasename < numbers.sql 

Si usted tiene la capacidad de conectarse directamente a su servidor MySQL desde fuera, entonces se podría usar un cliente local MySQL en lugar de tener que copiar y SSH. En ese caso, solo necesitaría una utilidad que pueda descomprimir archivos .gz en Windows. Creo que 7zip lo hace, o puede obtener el gzip/gunzip binaries para Windows.

43

Sin una etapa separada para extraer el archivo:

# import gzipped-mysql dump 
gunzip < DUMP_FILE.sql.gz | mysql --user=DB_USER --password DB_NAME 

uso el fragmento anterior para volver a importar mysqldump-copias de seguridad, y la siguiente para realizar copias de arriba.

# mysqldump and gzip (-9 ≃ highest compression) 
mysqldump --user=DB_USER --password DB_NAME | gzip -9 > DUMP_FILE.sql.gz 
+2

@Wasim Revertido a la versión sin 'PASSWORD' en el comando. No se deben especificar las contraseñas directamente en la línea de comandos, a menos que sea absolutamente necesario. En la mayoría de los sistemas, los comandos de shell se almacenan en un archivo de historial como '.bash_history' y, por lo tanto, las contraseñas especificadas directamente en el comando también se almacenan en ese archivo de historial. Si omite la contraseña, MySQL la solicitará de forma interactiva. Si realmente necesita incluir las contraseñas en el comando, debe sangrar el comando por un carácter de espacio, lo que evita que el comando se registre en el historial de shell. – feeela

3

Para una oneliner, en Linux o cygwin, que tiene que hacer la autenticación de clave pública en el host, de lo contrario ssh va a pedir la contraseña.


gunzip -c numbers.sql.gz | ssh [email protected] mysql --user=user_name --password=your_password db_name 

O hacer el reenvío de puertos y conectar con el MySQL remoto mediante una conexión "local":

ssh -L some_port:host:local_mysql_port [email protected]

luego hacer la conexión MySQL en el equipo local para localhost: some_port.

El reenvío de puertos también funcionará desde masilla, con la opción -L similar o puede configurarla desde el panel de configuración, en algún lugar del árbol.

+0

El oneliner es agradable, pero los resultados en la contraseña de la base de datos aparecen en el historial de comandos que no es seguro en general. –

96

Inicie sesión en su servidor utilizando un programa de shell como masilla.

Escriba el siguiente comando en la línea de comandos

zcat DB_File_Name.sql.gz | mysql -u username -p Target_DB_Name 

donde

DB_File_Name.sql.gz = ruta completa del SQL.gz archivo que se desea importar

username = mysql su nombre de usuario

Target_DB_Name = nombre de la base de datos en la que desea importar la base de datos

Al llegar a entrar en la línea de comandos, se le solicitará la contraseña. Ingrese su contraseña de MySQL.

¡Ya ha terminado!

+11

gzcat, en realidad. – thomaspaulb

+9

Esta es la mejor respuesta si desea evitar perder espacio en disco (y tiempo). – hafichuk

+0

para punto (.gz y no sql) – onalbi

0

Si tiene muchas bases de datos que importa y los volcados son grandes (a menudo trabajo con volcados multigigabyte Gzipped).

Aquí hay una manera de hacerlo dentro de mysql.

$ mkdir databases 
$ cd databases 
$ scp [email protected]:*.sql.gz . # Here you would just use putty to copy into this dir. 
$ mkfifo src 
$ mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 1 
Server version: 5.5.41-0 
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. 
Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> create database db1; 
mysql> \! (zcat db1.sql.gz > src &) 
mysql> source src 
. 
. 
mysql> create database db2; 
mysql> \! (zcat db2.sql.gz > src &) 
mysql> source src 

La única ventaja que esto tiene sobre

zcat db1.sql.gz | mysql -u root -p 

es que se puede hacer fácilmente múltiples sin entrar en los lotes de contraseñas de veces.

0

Si tiene SCP a continuación:

Para mover el archivo de local a remoto:

$scp /home/user/file.gz [email protected]:path/to/file.gz 

Para mover el archivo remoto a local:

$scp [email protected]:path/to/file.gz /home/user/file.gz 

para exportar sus MySQL archivo sin iniciar sesión en el sistema remoto:

$mysqldump -h ipaddressofremotehost -Pportnumber -u usernameofmysql -p databasename | gzip -9 > databasename.sql.gz 

para importar su inicio de sesión mysql archivo withoug en al sistema remoto:

$gunzip < databasename.sql.gz | mysql -h ipaddressofremotehost -Pportnumber -u usernameofmysql -p 

Nota: Asegúrese de que tiene acceso a la red a la dirección ip del host remoto

para comprobar el acceso a la red:

$ping ipaddressofremotehost 
0

Si el volcado de mysql fue un archivo .gz, necesita hacer un gunzip para descomprimir el archivo escribiendo $ gunzip mysqldump.sql.gz

Esto descomprimirá el archivo .gz y solo almacenará mysqldump.sql en la misma ubicación.

Escriba el comando siguiente para importar el archivo de datos SQL:

$ mysql -u nombre de usuario -p -h localhost prueba de la base de datos < mysqldump.sql contraseña: _

Cuestiones relacionadas