¿Cómo importo un archivo SQL usando la línea de comando en MySQL?

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?

preguntado el 16 de julio de 13 a las 01:07

¿Qué pasa con estos tipos duplicados? De hecho, esta es una pregunta útil con su propio propósito:

@ValentinoPereira, ¿ha verificado las fechas de las preguntas originales antes de determinar los tipos duplicados?

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. -

30 Respuestas

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." - panda-byte

Esta línea de comando no tiene precio xD - James

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

PowerShell

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

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

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

@PeterMortensen: dependerá del tamaño de los datos; de lo contrario, normalmente es rápido. - Manoj Kumar

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

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

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

  1. Abra la línea de comando de MySQL
  2. Escriba la ruta de su directorio mysql bin y presione Enviar
  3. Pegue su archivo SQL dentro del bin carpeta del servidor mysql.
  4. Crea una base de datos en MySQL.
  5. Utilice esa base de datos en particular donde desea importar el archivo SQL.
  6. Tipo source databasefilename.sql y Enviar
  7. Su archivo SQL se cargó correctamente.

respondido 19 mar '15, 18:03

escriba la ruta de su directorio mysql bin y presione - ramesh parek

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

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

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

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

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í:

https://dev.mysql.com/doc/refman/5.7/en/show-collation.html

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

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

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

mysql --user=[user] --password=[password] [database] < news_ml_all.sql

Respondido 06 Oct 21, 13:10

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

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

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

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

Importar una base de datos

  1. Ir a conducir:

     d:
    
  2. Inicio de sesión MySQL

     c:\xampp\mysql\bin\mysql -u root -p
    
  3. Le pedirá pwd. Ingresarlo:

     pwd
    
  4. Seleccione la base de datos

     use DbName;
    
  5. 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

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

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

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

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:

https://chartio.com/resources/tutorials/importing-from-and-exporting-to-files-using-the-mysql-command-line/

Respondido 11 Abr '19, 13:04

Agregue la --force opción:

mysql -u username -p database_name --force < file.sql

Respondido 02 Jul 16, 10:07

El siguiente comando me funciona desde la línea de comando (cmd) en Windows 7 en WAMP.

d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql

respondido 19 mar '15, 18:03

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

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

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í:

  1. La base de datos tiene que existir primero.
  2. 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 or haz tu propia pregunta.