¿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?
Author: DineshDB, 2013-07-16

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.

 2698
Author: bansi,
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;
 549
Author: vladkras,
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 ;
 227
Author: Paresh Behede,
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;
 80
Author: Manoj Kumar,
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
 53
Author: Amrit Dhungana,
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
  1. Abra la línea de comandos de MySQL
  2. Escriba la ruta de acceso de su directorio bin mysql y presione Enter
  3. Pegue su archivo SQL dentro de la carpeta bin del servidor mysql.
  4. Crear una base de datos en MySQL.
  5. Use esa base de datos en particular donde desea importar el archivo SQL.
  6. Escriba source databasefilename.sql y Enter
  7. Su archivo SQL se cargó correctamente.
 48
Author: user4412947,
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.

 38
Author: Kasun Siyambalapitiya,
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;
 37
Author: Shiks,
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
 29
Author: Tanmay Patel,
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
 22
Author: Leopathu,
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
 18
Author: Adeleke Akinade,
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
 18
Author: Francesco Casula,
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
 14
Author: user3546602,
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
 12
Author: Abdul Rehman Janjua,
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.

 10
Author: Reuben,
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

  1. Ir a la unidad:

    command: d:
    
  2. MySQL login

    command: c:\xampp\mysql\bin\mysql -u root -p
    
  3. Pedirá pwd. Enter it:

    pwd
    
  4. Seleccione la base de datos

    use DbName;
    
  5. Proporcione el nombre del archivo

    \.DbName.sql
    
 10
Author: Pritam Chaudhari,
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
 8
Author: ktaria,
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.

 7
Author: Giri,
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
 7
Author: victor,
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.

 6
Author: Sathish D,
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 
 5
Author: JohnSharath,
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
 5
Author: user3728517,
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
 5
Author: David Silva Smith,
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.

 4
Author: Paul Leclerc,
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.

 4
Author: Fery Wardiyanto,
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í:

  1. La base de datos tiene que existir primero
  2. 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.

 4
Author: jozxyqk,
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
 4
Author: Siva Praveen,
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í:

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

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.

 4
Author: David,
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.

 3
Author: Ramesh Sinha,
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
 3
Author: ChuckCottrill,
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