¿Cómo importar un archivo SQL usando la línea de comandos en MySQL?
Tengo un archivo .sql
con una exportación desde phpMyAdmin
. Quiero importarlo a un servidor diferente usando la línea de comandos.
Tengo una instalación de Windows Server 2008 R2. Coloqué el archivo .sql
en el Unidad C, y probé este comando
database_name < file.sql
No funciona Recibo errores de sintaxis.
- ¿Cómo puedo importar este archivo sin problemas?
- ¿Necesito crear una base de datos primero?
30 answers
Intenta:
mysql -u username -p database_name < file.sql
Compruebe Las opciones de MySQL.
Nota-1: Es mejor usar la ruta completa del archivo SQL file.sql
.
Nota-2: Use -R
y --triggers
para mantener las rutinas y disparadores de la base de datos original. No se copian por defecto.
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-18 09:50:24
Un uso común de mysqldump es para hacer una copia de seguridad de una base de datos completa:
shell> mysqldump db_name > backup-file.sql
Puede cargar el archivo de volcado de nuevo en el servidor como este:
UNIX
shell> mysql db_name < backup-file.sql
Lo mismo en Windows símbolo del sistema:
mysql -p -u [user] [database] < backup-file.sql
PowerShell
C:\> cmd.exe /c "mysql -u root -p db_name < backup-file.sql"
Línea de comandos MySQL
mysql> use db_name;
mysql> source backup-file.sql;
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-05-27 17:54:04
En cuanto al tiempo necesario para importar archivos de gran tamaño: lo más importante es que lleva más tiempo porque la configuración predeterminada de MySQL es autocommit = true
. Debe activarlo antes de importar su archivo y luego verificar cómo funciona la importación como una gema.
Solo tienes que hacer lo siguiente:
mysql> use db_name;
mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
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-10-13 14:53:45
Entre todas las respuestas, para el problema anterior, esta es la mejor:
mysql> use db_name;
mysql> source file_name.sql;
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-08-18 12:12:06
Podemos usar este comando para importar SQL desde la línea de comandos:
mysql -u username -p password db_name < file.sql
Por ejemplo, si el nombre de usuario es root
y la contraseña es password
. Y tiene un nombre de base de datos como bank
y el archivo SQL es bank.sql
. Entonces, simplemente haz lo siguiente:
mysql -u root -p password bank < bank.sql
Recuerde dónde está su archivo SQL. Si su archivo SQL está en la carpeta/directorio Desktop
, vaya al directorio de escritorio e ingrese el comando de esta manera:
~ ? cd Desktop
~/Desktop ? mysql -u root -p password bank < bank.sql
Y si usted está en el directorio Project
y su archivo SQL está en el Desktop
directorio. Si quieres acceder desde el directorio Project
entonces puedes hacer lo siguiente:
~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql
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-03-19 17:51:30
- Abra la línea de comandos de MySQL
- Escriba la ruta de acceso de su directorio bin mysql y presione Enter
- Pegue su archivo SQL dentro de la carpeta
bin
del servidor mysql. - Crear una base de datos en MySQL.
- Use esa base de datos en particular donde desea importar el archivo SQL.
- Escriba
source databasefilename.sql
y Enter - Su archivo SQL se cargó correctamente.
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-03-19 18:10:20
Si ya tiene la base de datos, use lo siguiente para importar el archivo dump
o sql
mysql -u username -p database_name < file.sql
Si no lo hace necesita crear la base de datos relevante (vacía) en MySQL, para ese primer inicio de sesión en la consola MySQL
ejecutando el siguiente comando en terminal o en cmd
mysql -u userName -p;
Y cuando se le solicite, proporcione la contraseña.
Luego crea una base de datos y úsala
mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;
Luego importa el archivo sql
o dump
a la base de datos de
mysql> source pathToYourSQLFile;
Nota: si su terminal no está en la ubicación donde existe el archivo dump
o sql
, use la ruta relativa anterior.
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
2017-10-12 07:01:56
Una solución que funcionó para mí es la siguiente:
Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
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-03-21 18:31:18
Vaya al directorio donde tiene el ejecutable MySQL. -u
para el nombre de usuario y -p
para solicitar la contraseña:
C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql
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-03-19 17:57:36
Para importar una única base de datos, utilice el siguiente comando.
mysql -u username -p password dbname < dump.sql
Para importar varios volcados de base de datos, utilice el siguiente comando.
mysql -u username -p password < dump.sql
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-02-08 17:50:53
Para volcar una base de datos en un archivo SQL utilice el siguiente comando
mysqldump -u username -p database_name > database_name.sql
Para importar un archivo SQL a una base de datos (asegúrese de que está en el mismo directorio que el archivo SQL o proporcione la ruta completa al archivo)
mysql u -username -p database_name < database_name.sql
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
2017-01-04 17:42:50
Creo que vale la pena mencionar que también puede cargar un archivo gzipped (comprimido) con zcat
como se muestra a continuación:
zcat database_file.sql.gz | mysql -u username -p -h localhost database_name
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
2017-03-01 10:55:38
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
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-01-08 14:09:16
Para importar varios archivos SQL a la vez, use esto:
# Unix-based solution
for i in *.sql;do mysql -u root -pPassword DataBase < $i;done
Para importación simple:
# Unix-based solution
mysql -u root -pPassword DataBase < data.sql
Para WAMP :
#mysqlVersion replace with your own version
C:\wamp\bin\mysql\mysqlVersion\bin\mysql.exe -u root -pPassword DataBase < data.sql
Para XAMPP:
C:\xampp\mysql\bin\mysql -u root -pPassword DataBase < data.sql
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-03-21 18:32:30
No es necesario especificar el nombre de la base de datos en la línea de comandos si el .el archivo sql contiene las sentencias CREATE DATABASE IF NOT EXISTS db_name
y USE db_name
.
Solo asegúrese de que se está conectando con un usuario que tiene los permisos para crear la base de datos, si la base de datos mencionada en el .el archivo sql no existe.
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-07-02 09:37:39
Importar una base de datos
-
Ir a la unidad:
command: d:
-
MySQL login
command: c:\xampp\mysql\bin\mysql -u root -p
-
Pedirá pwd. Enter it:
pwd
-
Seleccione la base de datos
use DbName;
-
Proporcione el nombre del archivo
\.DbName.sql
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-07-02 09:41:33
Añadir el --force
opción:
mysql -u username -p database_name --force < file.sql
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-07-02 09:40:03
Pensé que podría ser útil para aquellos que están utilizando Mac OS X :
/Applications/xampp/xamppfiles/bin/mysql -u root -p database < database.sql
Reemplace xampp
por mamp
u otros servidores web.
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-03-19 17:58:53
El siguiente comando funciona para mí desde la línea de comandos (cmd) en Windows 7 en WAMP.
d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql
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-03-19 18:14:22
Vaya al directorio donde tiene MySQL.
c:\mysql\bin\> mysql -u username -p password database_name <
filename.sql
También para volcar todas las bases de datos, use la opción -all-databases
, y ya no es necesario especificar el nombre de las bases de datos.
mysqldump -u username -ppassword –all-databases > dump.sql
O puede usar algunos clientes GUI como SQLyog para hacer esto.
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-03-19 17:49:09
A veces también importa el puerto definido, así como la dirección IP del servidor de esa base de datos...
mysql -u user -p user -h <Server IP> -P<port> (DBNAME) < DB.sql
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-03-19 17:53:28
Para fines de copia de seguridad, haga un archivo BAT y ejecute este archivo BAT utilizando Programador de tareas. Tomará una copia de seguridad de la base de datos; simplemente copie la siguiente línea y pegue en Bloc de notas y luego guarde el .archivo bat y ejecutarlo en su sistema.
@echo off
for /f "tokens=1" %%i in ('date /t') do set DATE_DOW=%%i
for /f "tokens=2" %%i in ('date /t') do set DATE_DAY=%%i
for /f %%i in ('echo %date_day:/=-%') do set DATE_DAY=%%i
for /f %%i in ('time /t') do set DATE_TIME=%%i
for /f %%i in ('echo %date_time::=-%') do set DATE_TIME=%%i
"C:\Program Files\MySQL\mysql server 5.5\bin\mysqldump" -u username -ppassword mysql>C:/%DATE_DAY%_%DATE_TIME%_database.sql
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-03-19 17:56:39
Me encontré con el problema de que la base de datos no se creó.
Lo arreglé así
mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql
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-08-11 05:02:36
Para información acabo de tener por defecto root + withoutpassword, no funciona con todas las respuestas anteriores.
He creado un nuevo usuario con todos los privilegios y una contraseña. Funciona.
-ppassword SIN ESPACIO.
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-12-29 14:40:42
Estoy usando Windows 10 con Powershell 5 y encontré que casi todas las soluciones "unix-like" no funcionan para mí.
> mysql -u[username] [database-name] < my-database.sql
At line:1 char:31
+ mysql -u[username] [database-name] < my-database.sql
+ ~
The '<' operator is reserved for future use.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : RedirectionNotSupported
Termino usando este comando.
> type my-database.sql | mysql -u[username] -h[localhost] -p [database-name]
Y funciona perfectamente, espero que ayude.
Gracias a @Francesco Casula's respuesta por cierto.
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
2017-05-23 10:31:37
Similar a https://stackoverflow.com/a/17666285/1888983
Diferencias clave para mí:
- La base de datos tiene que existir primero
- No hay espacio entre
-p
y la contraseña
shell> mysql -u root -ppassword #note: no space between -p and password
mysql> CREATE DATABASE databasename;
mysql> using databasename;
mysql> source /path/to/backup.sql
Ejecutando fedora 26 con MariaDB.
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
2017-08-08 19:30:03
mysql -u root -p password -D database_name << import.sql
Use la ayuda de mysql para obtener más detalles mysql --help
Creo que estas serán opciones útiles en nuestro contexto
[~]$ mysql --help
mysql Ver 14.14 Distrib 5.7.20, for osx10.12 (x86_64) using EditLine wrapper
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Usage: mysql [OPTIONS] [database]
-?, --help Display this help and exit.
-I, --help Synonym for -?
--bind-address=name IP address to bind to.
-D, --database=name Database to use.
--delimiter=name Delimiter to be used.
--default-character-set=name Set the default character set.
-f, --force Continue even if we get an SQL error.
-p, --password[=name] Password to use when connecting to server.
-h, --host=name Connect to host.
-P, --port=# Port number to use for connection or 0 for default to, in order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default (3306).
--protocol=name The protocol to use for connection (tcp, socket, pipe,
-s, --silent Be more silent. Print results with a tab as separator, each row on new line.
-v, --verbose Write more. (-v -v -v gives the table output format).
-V, --version Output version information and exit.
-w, --wait Wait and retry if connection is down.
Lo que es divertido, si estamos importando una gran base de datos y no tener una barra de progreso. Utilice el visor de tuberías y vea la transferencia de datos a través de la tubería
Para Mac, brew install pv
.Para Debian / Ubuntu, apt-get install pv
.
Otros, véase http://www.ivarch.com/programs/pv.shtml
pv import.sql | mysql -u root -p password -D database_name
1.45GiB 1:50:07 [339.0KiB/s] [=============> ] 14% ETA 11:09:36
1.46GiB 1:50:14 [ 246KiB/s] [=============> ] 14% ETA 11:09:15
1.47GiB 1:53:00 [ 385KiB/s] [=============> ] 14% ETA 11:05:36
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
2017-12-18 18:40:09
Mientras que la mayoría de las respuestas aquí solo mencionan el comando simple
Mysql-u database_user-p [db_name]
Hoy en día es bastante común que las bases de datos y las tablas tengan colación utf8 donde este comando no es suficiente. Teniendo utf8-collation en las tablas exportadas es necesario utilizar este comando:
Mysql - u database_user-p default default-character-set=utf8 [db_name]
Surley esto funciona para otros conjuntos de caracteres también, cómo mostrar la notación correcta se puede ver aquí:
Un comentario mencionó también que si una base de datos nunca existe una base de datos vacía tenía que ser creada primero. Esto puede ser correcto en algunos casos, pero depende del archivo de exportación. Si el archivo exportado ya incluye el comando para crear la base de datos, entonces la base de datos nunca tiene que crearse en un paso separado, lo que incluso podría causa un error en la importación. Así que en la importación es recomendable echar un vistazo primero en el archivo para saber qué comandos se incluyen allí, en la exportación es recomendable tener en cuenta la configuración, especialmente si el archivo es muy grande y difícil de leer en un editor.
Todavía hay más parámetros para el comando que se enumeran y se explican aquí:
Https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html
Si usa otra versión de base de datos, considere buscando la versión correspondiente del manual también. Los enlaces mencionados se refieren a MySQL versión 5.7.
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-08-07 18:11:40
Los siguientes pasos ayudan a cargar file.sql
a la base de datos MySQL.
Paso 1: Sube file.sql.zip
a cualquier directorio y descomprime allí
Nota : sudo apt-get install unzip
: sudo apt-get unzip file.sql.zip
Paso 2: Ahora navega a ese directorio. Ejemplo: cd /var/www/html
Paso 3: mysql -u username -p database-name < file.sql
Introduzca la contraseña y espere hasta que se complete la carga.
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-03-19 18:12:24
Proporcionar credenciales en la línea de comandos no es una buena idea. Las respuestas anteriores son grandes, pero descuidan mencionar
mysql --defaults-extra-file=etc/myhost.cnf database_name < file.sql
Donde etc / myhost.cnf es un archivo que contiene host, usuario, contraseña y evita exponer la contraseña en la línea de comandos. He aquí una muestra,
[client]
host=hostname.domainname
user=dbusername
password=dbpassword
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
2017-02-25 01:18:48