Importar e insertar sql.archivo gz en base de datos con masilla
Quiero insertar un archivo sql.gz
en mi base de datos con SSH. ¿Qué debo hacer?
Por ejemplo, tengo una base de datos de números de teléfono cuyo nombre es numbers.sql.gz
, ¿qué es este tipo de archivo y cómo puedo importar este archivo a mi base de datos?
7 answers
El archivo es un archivo SQL comprimido (gzipped), casi con seguridad un archivo de texto plano con .sql como su extensión. Lo primero que debe hacer es copiar el archivo a su servidor de base de datos a través de scp.. Creo que PuTTY es pscp.exe
# Copy it to the server via pscp
C:\> pscp.exe numbers.sql.gz user@serverhostname:/home/user
Luego SSH en su servidor y descomprima el archivo con gunzip
user@serverhostname$ gunzip numbers.sql.gz
user@serverhostname$ ls
numbers.sql
Finalmente, impórtalo a tu base de datos MySQL usando el operador de redirección de entrada <
:
user@serverhostname$ mysql -u mysqluser -p < numbers.sql
Si los números.archivo sql no crea una base de datos, pero espera que uno ya esté presente, necesitará incluir la base de datos en el comando también:
user@serverhostname$ mysql -u mysqluser -p databasename < numbers.sql
Si tiene la capacidad de conectarse directamente a su servidor MySQL desde fuera, entonces podría usar un cliente MySQL local 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 los binarios gzip/gunzip para Windows.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-10 19:53:48
Inicie sesión en su servidor usando un programa de shell como putty.
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.archivo gz a importar
username
= su nombre de usuario de mysql
Target_DB_Name
= nombre de la base de datos donde desea importar la base de datos
Cuando presione enter en la línea de comandos, se le pedirá la contraseña. Introduzca su contraseña de MySQL.
¡Has terminado!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-01 23:02:20
Sin un paso separado para extraer el archivo:
# import gzipped-mysql dump
gunzip < DUMP_FILE.sql.gz | mysql --user=DB_USER --password DB_NAME
Utilizo el fragmento de código anterior para reimportar mysqldump-backups, y lo siguiente para realizar copias de seguridad.
# mysqldump and gzip (-9 ≃ highest compression)
mysqldump --user=DB_USER --password DB_NAME | gzip -9 > DUMP_FILE.sql.gz
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-14 13:12:06
Para un oneliner, en linux o cygwin, necesita hacer autenticación de clave pública en el host, de lo contrario ssh estará pidiendo contraseña.
gunzip -c numbers.sql.gz | ssh user@host mysql --user=user_name --password=your_password db_name
O haga el reenvío de puertos y conéctese al mysql remoto usando una conexión "local":
ssh -L some_port:host:local_mysql_port user@host
Luego haga la conexión mysql en su máquina local a localhost:some_port.
El reenvío de puertos también funcionará desde putty , con la opción similar-L o puede configurarlo desde el panel de ajustes, en algún lugar en el árbol.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-10 20:46:08
Si tienes scp entonces:
Para mover su archivo de local a remoto:
$scp /home/user/file.gz user@ipaddress:path/to/file.gz
Para mover su archivo de remoto a local:
$scp user@ipaddress:path/to/file.gz /home/user/file.gz
Para exportar su archivo mysql sin iniciar sesión en el sistema remoto:
$mysqldump -h ipaddressofremotehost -Pportnumber -u usernameofmysql -p databasename | gzip -9 > databasename.sql.gz
Para importar su archivo mysql sin iniciar sesión en el sistema remoto:
$gunzip < databasename.sql.gz | mysql -h ipaddressofremotehost -Pportnumber -u usernameofmysql -p
Nota: Asegúrese de tener acceso de red a la dirección ip del host remoto
Para comprobar el acceso a la red:
$ping ipaddressofremotehost
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-18 02:34:46
Si tiene muchas bases de datos, importa y los volcados son grandes (a menudo trabajo con volcados multigigabyte con Gzip).
Aquí hay una manera de hacerlo dentro de mysql.
$ mkdir databases
$ cd databases
$ scp user@orgin:*.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 puede hacer fácilmente múltiples sin ingresar la contraseña muchas veces.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-19 13:48:33
Si el volcado de mysql era a .archivo gz, necesita 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 siguiente comando para importar el archivo de datos sql:
Mysql mysql-u username-p-h localhost test-database
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-22 07:17:14