¿Cómo importo un archivo SQL usando la línea de comando en MySQL?
Frecuentes
Visto 4,530 equipos
2602
Tengo un .sql
archivo con una exportación de phpMyAdmin
. Quiero importarlo a un servidor diferente usando la línea de comando.
Tengo un Windows Server 2008 instalación de R2. coloqué el .sql
archivo en el Unidad C, y probé este comando
database_name < file.sql
No está trabajando. Recibo errores de sintaxis.
- ¿Cómo puedo importar este archivo sin problema?
- ¿Necesito crear una base de datos primero?
30 Respuestas
4697
Tratar:
mysql -u username -p database_name < file.sql
Revise Opciones de MySQL.
Nota 1: Es mejor usar la ruta completa del archivo SQL file.sql
.
Nota 2: Utilice la herramienta -R
y --triggers
para mantener las rutinas y disparadores de la base de datos original. No se copian por defecto.
notas 3 Es posible que deba crear la base de datos (vacía) desde MySQL si aún no existe y el SQL exportado no contiene CREATE DATABASE
(exportado con --no-create-db
or -n
opción), antes de poder importarlo.
Respondido 06 Oct 21, 12:10
sudo mysql -u username -p database_name < file.sql
funciona en algunos casos. - Sergio Reis
¿Entonces -R
y --triggers
parecen ser opciones para mysqldump
, que no me quedó claro de inmediato, según la respuesta. Además, --triggers
is habilitado por defecto "Esta opción está habilitada por defecto; deshabilítela con --skip-triggers
." - byte panda
Esta línea de comando no tiene precio xD - James
974
Un uso común de mysqldump es para hacer una copia de seguridad de una base de datos completa:
mysqldump db_name > backup-file.sql
Puede volver a cargar el archivo de volcado en el servidor de esta manera:
Unix
mysql db_name < backup-file.sql
Lo mismo en el Windows símbolo del sistema:
mysql -p -u [user] [database] < backup-file.sql
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;
Respondido 06 Oct 21, 12:10
¿Soy yo el único que nunca ha podido usar <
operador en mysql? (ubuntu18/20) - T.Todua
No tengo idea de por qué los ejemplos de Windows incluyen parámetros -u
y -p
mientras que el ejemplo de Unix no lo hace. La interfaz para mysql
es el mismo en ambos, por lo que lo más probable es que necesite el mismo comando en Unix que se presenta aquí para Windows. - Stijn de Witt
donde ponemos backup-file.sql? ¿Qué camino se ve por defecto? - temirbek
Voy a C:\Program Files\MySQL\MySQL Server 8.0\bin y ejecuto mysql.exe. Inicie sesión en MySQL e hizo los cambios anteriores. Funcionó. Gracias. - Swati
@StijndeWitt lo más probable es que su distribución de Linux haya configurado las credenciales en, por ejemplo, el archivo ~/.my.cnf - MTP
447
En cuanto al tiempo que lleva importar archivos grandes: lo más importante es que lleva más tiempo porque la configuración predeterminada de MySQL es autocommit = true
. Debe configurar eso antes de importar su archivo y luego verificar cómo funciona la importación como una joya.
Solo necesitas hacer lo siguiente:
mysql> use db_name;
mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
Respondido 06 Oct 21, 13:10
¿Hay alguna manera de hacerlo en una sola línea de comando en el comando mysql utilizado para importar? - volomike
Estoy de acuerdo en que esto es la mejor respuesta. autocommit=0
porción marcó una gran diferencia en términos de velocidad. - mehov
será el autocommit=0
funcionará en archivos más grandes? como un archivo sql de 8 gb. - novato
No siempre es necesario apagar autocommit
. Vale la pena verificar el volcado de la base de datos en un editor, ya podría comenzar con SET autocommit=0;
. - cambio hash
@Volomike { echo "SET autocommit=0;"; gato db.sql; echo "CONFIAR;";} | mysql -u what -p - eso es para líneas de comando compatibles con posix, no estoy seguro acerca de Windows - iateadonut
190
Entre todas las respuestas, para el problema anterior, esta es la mejor:
mysql> use db_name;
mysql> source file_name.sql;
Respondido 18 ago 16, 13:08
Pero todavía muy lento(?). - Pedro Mortensen
@PeterMortensen: dependerá del tamaño de los datos; de lo contrario, normalmente es rápido. - Manoj Kumar
121
La forma más fácil de importar a su esquema:
Inicie sesión en mysql y emita los siguientes comandos mencionados.
mysql> use your_db_name;
mysql> source /opt/file.sql;
Respondido 16 Jul 19, 19:07
Esto funcionará sin el comando 'usar' para volcados con db multilpe en él - Hayden Thring
Estaba tratando de importar un volcado de una base de datos con un nombre diferente pero con la misma estructura, la respuesta correcta elegida por el autor no funcionó, creó una nueva base de datos con el nombre de la base de datos en el archivo de volcado. Esta respuesta aquí hizo lo que quería, gracias hombre: Wuelber Castillo
¡estupendo! exactamente lo que estaba buscando! - Serguéi Zahharenko
esto también monitorea la ejecución del script, mucho mejor que las otras respuestas: reflejo
Pero esto no es desde la línea de comando en el espíritu de la pregunta. Está utilizando el shell de MySQL de forma interactiva. - Pedro Mortensen
91
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 tienes un nombre de base de datos como bank
y el archivo SQL es bank.sql
. Entonces, simplemente haz esto:
mysql -u root -p password bank < bank.sql
Recuerde dónde está su archivo SQL. Si su archivo SQL está en el Desktop
carpeta/directorio, luego vaya al directorio del escritorio e ingrese el comando de esta manera:
cd ~/Desktop
mysql -u root -p password bank < bank.sql
Y si estás en el Project
directorio y su archivo SQL está en el Desktop
directorio. Si desea acceder a él desde el Project
directorio entonces puedes hacer esto:
cd ~/Project
mysql -u root -p password bank < ~/Desktop/bank.sql
Respondido 06 Oct 21, 12:10
No debería haber un espacio entre -p
y password
- ejaz
jap. Esto no funcionaría. Correcto sería mysql -u root -p"password" bank < bank.sql
- Armin
¿Por qué simplemente no puedes responder en una línea? mysql -u username -ppassword db_name < file.sql
- Naveed
Si bien esto no tiene ninguna relación con esta pregunta/respuesta, cuando trabaje con bases de datos no triviales, prefiera NO ingresar la contraseña en el mismo comando en texto sin formato. Si no especifica la contraseña como parte del comando, se le solicitará una contraseña que puede ingresar de forma segura: pregunta
Especialmente por .bash_history
- Neil
73
Si ya tiene la base de datos, use lo siguiente para importar la dump
o sql
archivo:
mysql -u username -p database_name < file.sql
si no necesita crear la base de datos relevante (vacía) en MySQL, para eso primero inicie sesión en el MySQL
consola ejecutando el siguiente comando en la terminal o en cmd
mysql -u userName -p;
Y cuando se le solicite proporcione la contraseña.
A continuación, cree una base de datos y utilícela:
mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;
Luego importa el sql
o dump
archivo a la base de datos de
mysql> source pathToYourSQLFile;
Nota: si su terminal no está en el lugar donde se encuentra el dump
or sql
el archivo existe, utilice la ruta relativa de arriba.
Respondido 10 Jul 19, 15:07
65
- Abra la línea de comando de MySQL
- Escriba la ruta de su directorio mysql bin y presione Enviar
- Pegue su archivo SQL dentro del
bin
carpeta del servidor mysql. - Crea una base de datos en MySQL.
- Utilice esa base de datos en particular donde desea importar el archivo SQL.
- Tipo
source databasefilename.sql
y Enviar - Su archivo SQL se cargó correctamente.
respondido 19 mar '15, 18:03
escriba la ruta de su directorio mysql bin y presione - ramesh parek
52
Una solución que funcionó para mí es la siguiente:
Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
respondido 21 mar '18, 18:03
Esto funcionó para mí usando MySQL Command Line Client, después de colocar mi archivo sql en el explorador de ventanas de vista de directorio / bin adecuado. Gracias - Klewis
Un poco lento pero no se detiene en el medio y no digas que el servidor MySQL se ha ido. - Jaskaran Singh
44
Para volcar una base de datos en un archivo SQL, use 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 estar en el mismo directorio que el archivo SQL o proporcione la ruta completa al archivo), haga lo siguiente:
mysql -u username -p database_name < database_name.sql
Respondido 10 Jul 19, 15:07
42
Creo que vale la pena mencionar que también puedes cargar un gzip (comprimido) archivo con zcat
como se muestra a continuación:
zcat database_file.sql.gz | mysql -u username -p -h localhost database_name
respondido 01 mar '17, 10:03
En macOS, tuve que usar gzcat
en lugar de zcat
. - Melebio
41
Vaya al directorio donde tiene el ejecutable MySQL. -u
para nombre de usuario y -p
para solicitar la contraseña:
C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql
respondido 19 mar '15, 17:03
Creo que sería más útil para el OP y otras preguntas, cuando agregue alguna explicación a su intención. - Reportero
Eso funcionaría solo si tiene mysql.exe definido en sus variables de entorno de Windows. De lo contrario, debe escribir toda la ruta al archivo mysql.exe. Y su sintaxis es incorrecta. Por ejemplo: "d:\wamp\bin\mysql\mysql5.5.8\bin\mysql.exe -u YOUR_USERNAME -p DB_NAME < FILENAME.SQL" Más información aquí: wpy.me/es/blog/… - wappy
38
Si bien la mayoría de las respuestas aquí solo mencionan el comando simple
mysql -u usuario_base_datos -p [nombre_bd] < archivo_base_datos.sql
hoy en día es bastante común que las bases de datos y las tablas tengan utf8-collation donde este comando no es suficiente.
Teniendo utf8-collation en las tablas exportadas, se requiere usar este comando:
mysql -u database_user -p --default-character-set=utf8 [db_name] < database_file.sql
Se puede hacer una exportación acorde con
mysqldump -u database_user -p --default-character-set=utf8 [db_name] > database_file.sql
Seguramente esto también funciona para otros conjuntos de caracteres, cómo mostrar la notación correcta se puede ver aquí:
Un comentario también mencionó que si una base de datos nunca existe, primero se debe crear una base de datos vacía. Esto podría 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 debe crearse en un paso separado, lo que incluso podría causar un error en la importación. Entonces, al importar, es recomendable echar un vistazo primero al archivo para saber qué comandos están incluidos allí, al exportar, 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 explican aquí:
https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html
Si utiliza otra versión de la base de datos, considere buscar también la versión correspondiente del manual. Los enlaces mencionados se refieren a MySQL versión 5.7.
EDIT:
Los mismos parámetros están trabajando para mysqldump
también. Entonces, si bien los comandos para exportar e importar son diferentes, los parámetros mencionados no lo son. Sin embargo, existe un sitio especial en el manual que describe las opciones para mysqldump
: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
Respondido 13 Abr '22, 15:04
36
Para importar una sola base de datos, use el siguiente comando.
mysql -u username -p password dbname < dump.sql
Para importar varios volcados de bases de datos, use el siguiente comando.
mysql -u username -p password < dump.sql
Respondido 08 Feb 18, 17:02
¡Gracias! Yo estaba buscando esto. Importación de todos los volcados de bases de datos MySQL a la vez. Una versión más concisa y corta del comando anterior mysql -u root -p < all.sql - Abhishek Singh
32
Para importar una base de datos, use el siguiente comando.
mysql> create new_database;
mysql> use new_database;
mysql> source (Here you need to import the path of the SQL file);
E.g.:
mysql> source E:/test/dump.sql;
Debe usar barras diagonales (/) incluso en Windows, por ejemplo, E:/prueba/volcado.sql en lugar de E:\prueba\dump.sql
O barras invertidas dobles (\\) debido al escape, es decir, E:\\prueba\\dump.sql
Respondido 06 Oct 21, 14:10
Esto realmente funcionó para mí. La sugerencia con más de 4000 votos no. - Mladen
Debe usar barras diagonales (/) incluso en Windows, por ejemplo, E:/test/dump.sql en lugar de E:\test\dump.sql o barras invertidas dobles (\\) debido al escape, es decir, E:\\test\ \dump.sql - Zdeněk Gromnica
Pero esto no es desde la línea de comando en el espíritu de la pregunta. Está utilizando el shell de MySQL de forma interactiva. - Pedro Mortensen
24
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
Respondido 06 Oct 21, 13:10
21
Me encontré con el problema de que no se creaba la base de datos.
Lo arreglé así:
mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql
Respondido 06 Oct 21, 17:10
20
Para exportar una base de datos:
mysqldump -u username -p database_name > file.sql
Para importar una base de datos:
mysql -u username -p database_name < file.sql
Respondido 17 Feb 20, 14:02
19
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 una importación simple:
# Unix-based solution
mysql -u root -pPassword DataBase < data.sql
Si WAMP:
REM 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
Respondido 06 Oct 21, 13:10
18
No necesita especificar el nombre de la base de datos en la línea de comando si el archivo .sql contiene CREATE DATABASE IF NOT EXISTS db_name
y USE db_name
Declaraciones.
Solo asegúrese de conectarse con un usuario que tenga los permisos para crear la base de datos, si la base de datos mencionada en el archivo .sql no existe.
Respondido 02 Jul 16, 10:07
17
Importar una base de datos
Ir a conducir:
d:
Inicio de sesión MySQL
c:\xampp\mysql\bin\mysql -u root -p
Le pedirá pwd. Ingresarlo:
pwd
Seleccione la base de datos
use DbName;
Proporcione el nombre del archivo
\.DbName.sql
Respondido 06 Oct 21, 13:10
¿En Windows, presumiblemente? ¿Por qué es necesario cambiar para conducir? D:
? es archivo DbName.sql
se supone que está en la raíz de la unidad D:
? ¿Puedes elaborar? por favor responda por editar (cambiar) tu respuesta, no aquí en los comentariossin "Editar:", "Actualizar:" o similar: la pregunta/respuesta debería aparecer como si hubiera sido escrita hoy). - Pedro Mortensen
16
Uso:
mysql -u root -p password -D database_name << import.sql
Use la ayuda de MySQL para 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 base de datos grande y no tenemos una barra de progreso. Use Pipe Viewer 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
.
Para otros, consulte pv - Visor de tuberías
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
Respondido 10 Jul 19, 15:07
Para Centos: yum install pv
- Jonny
16
Prueba este código.
mysql -u username -p database_name < file.sql
Para más información acerca de reembolsos, pagos de impacto económico o pagos por adelantado del crédito tributario por hijos, visite las siguientes páginas: Cómo importar un archivo SQL usando la línea de comando en MySQL
Respondido 06 Oct 21, 15:10
¿En qué se diferencia esto de las respuestas anteriores? - Pedro Mortensen
11
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 el -all-databases
y ya no es necesario especificar el nombre de ninguna base de datos.
mysqldump -u username -ppassword –all-databases > dump.sql
O puede usar algunos clientes GUI como SQLyog para hacer esto.
respondido 19 mar '15, 17:03
¿Funciona con el guión extraño (–) - cerca "todas las bases de datos" (también en la primera revisión)? - Pedro Mortensen
10
Puedes probar esta consulta.
Exportar:
mysqldump -u username –-password=your_password database_name > file.sql
Importar:
mysql -u username –-password=your_password database_name < file.sql
y detalle siguiendo este enlace:
Respondido 11 Abr '19, 13:04
9
Agregue la --force
opción:
mysql -u username -p database_name --force < file.sql
Respondido 02 Jul 16, 10:07
8
Proporcionar credenciales en la línea de comandos no es una buena idea. Las respuestas anteriores son geniales, pero olvidan 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 comando. Aquí hay una muestra,
[client]
host=hostname.domainname
user=dbusername
password=dbpassword
Respondido 25 Feb 17, 01:02
Sin embargo, la línea de comandos es volátil (ya menos que tenga un keylogger o un hombre detrás de su espalda, esperaría que sea seguro cuando se ejecuta localmente), mientras que un archivo es permanente, por lo tanto, debería ser un mayor riesgo, especialmente. cuando está en texto sin formato - Jorge Birbilis
...sin embargo, el comando mysql sí advierte "mysql: [Advertencia] El uso de una contraseña en la interfaz de línea de comandos puede ser inseguro". - Jorge Birbilis
8
Importar a la base de datos:
mysql -u nombreusuario -p nombre_base_datos < /ruta_archivo/nombre_archivo.sql
Exportar desde la base de datos:
mysqldump -u nombreusuario -p nombre_base_datos > /ruta_archivo/nombre_archivo.sql
Después de estos comandos, un mensaje le pedirá su contraseña de MySQL.
Respondido 10 Jul 19, 15:07
8
similar a la respuesta de vladkras a ¿Cómo importo un archivo SQL usando la línea de comando en MySQL?.
Diferencias clave para mí:
- La base de datos tiene que existir primero.
- Sin 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
Estoy ejecutando Fedora 26 con MariaDB.
Respondido 10 Jul 19, 15:07
Pero esto no es desde la línea de comando en el espíritu de la pregunta. Está utilizando el shell de MySQL de forma interactiva. - Pedro Mortensen
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas mysql sql command-line import or haz tu propia pregunta.
posible duplicado de Restaurar archivo de volcado MYSQL con línea de comandos - Bill Karwin
posible duplicado de stackoverflow.com/questions/11407349/… - AZinkey
¿Qué pasa con estos tipos duplicados? De hecho, esta es una pregunta útil con su propio propósito: Valentino Pereira
@ValentinoPereira, ¿ha verificado las fechas de las preguntas originales antes de determinar los tipos duplicados? AZinkey
Después de haber revisado todas las respuestas a continuación, debo decir que te perdiste una pista muy importante para aquellas personas que quieren ayudar. No pudo especificar el comando exacto cuando volcó los datos de la base de datos. - Light.G