it-swarm-es.com

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

Tengo un archivo .sql con una exportación de phpMyAdmin. Quiero importarlo a un servidor diferente usando la línea de comando.

Tengo una instalación Windows Server 2008 R2. Coloqué el archivo .sql en la unidad C drive , e intenté este comando

database_name < file.sql

No está trabajando. Recibo errores de sintaxis.

  • ¿Cómo puedo importar este archivo sin problemas?
  • ¿Necesito crear una base de datos primero?
1733
Jaylen

Tratar:

mysql -u username -p database_name < file.sql

Compruebe 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 los activadores de la base de datos original. No se copian por defecto.

Nota-3 Es posible que tenga que 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 o -n opción), antes de poder importar eso.

2955
bansi

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 volver a cargar el archivo de volcado en el servidor de esta manera:

UNIX

Shell> mysql db_name < backup-file.sql

Lo mismo en Windows Símbolo de comando:

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 comando de MySQL

mysql> use db_name;
mysql> source backup-file.sql;
612
vladkras

Con respecto al tiempo que lleva importar grandes archivos: lo más importante es que lleva más tiempo porque la configuración predeterminada de MySQL es autocommit = true. Debe desactivarlo antes de importar su archivo y luego verifique cómo funciona la importación como una gema.

Solo necesitas hacer lo siguiente:

mysql> use db_name;

mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
252
Paresh Behede

Entre todas las respuestas, para el problema anterior, esta es la mejor:

 mysql> use db_name;
 mysql> source file_name.sql;
92
Manoj Kumar

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

Recuerda donde está tu archivo SQL. Si su archivo SQL está en la carpeta/directorio Desktop, vaya al directorio del escritorio e ingrese el comando de esta manera:

~ ? cd Desktop
~/Desktop ? mysql -u root -p password bank < bank.sql

Y si está en el directorio Project y su archivo SQL está en el directorio Desktop. Si desea acceder a él desde el directorio Project, puede hacer lo siguiente:

~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql
60
Amrit Dhungana
  1. Abra la línea de comandos de MySQL
  2. Escriba la ruta de acceso de su directorio mysql bin 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. Utilice esa base de datos en particular donde desea importar el archivo SQL.
  6. Escribe source databasefilename.sqlEnter
  7. Su archivo SQL se carga con éxito.
57
user4412947

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 necesita crear la base de datos relevante (vacía) en MySQL, para eso primero inicie sesión en la consola MySQL ejecutando el siguiente comando en terminal o en cmd

mysql -u userName -p;

y cuando se le pida, proporcione la contraseña.

Luego crea una base de datos y úsala.

mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;

Luego importe el archivo sql o dump a la base de datos desde

mysql> source pathToYourSQLFile;

Nota: si su terminal no está en la ubicación donde existe el archivo dump o sql, use la ruta relativa que se muestra arriba.

44

Una solución que funcionó para mí es a continuación:

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
40
Shiks

Ve al directorio donde tienes el ejecutable MySQL. -u para el nombre de usuario y -p para pedir la contraseña:

C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql
32
Tanmay Patel

Para importar una sola base de datos, use el siguiente comando.

mysql -u username -p password dbname < dump.sql

Para importar múltiples volcados de base de datos, use el siguiente comando.

mysql -u username -p password < dump.sql
24
Leopathu

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
23
Francesco Casula

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)

mysql -u username -p database_name < database_name.sql
23
Adeleke Akinade
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
15
user3546602

La forma más fácil de importar en su esquema:

Inicie sesión en mysql y emita los comandos de mención a continuación. 

mysql> use your_db_name;

mysql> source /opt/file.sql;
15
Ammad

Para importar múltiples archivos SQL a la vez, usa esto:

# Unix-based solution
for i in *.sql;do mysql -u root -pPassword DataBase < $i;done

Para la 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
13

No es necesario que especifique el nombre de la base de datos en la línea de comandos si el archivo .sql contiene las declaraciones CREATE DATABASE IF NOT EXISTS db_name y USE db_name.

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.

12
Reuben

Importar una base de datos

  1. Ir a conducir:

    command: d:
    
  2. Inicio de sesión de MySQL

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

    pwd
    
  4. Seleccione la base de datos

    use DbName;
    
  5. Proporcione el nombre del archivo

    \.DbName.sql
    
11
Pritam Chaudhari

Agregue la opción --force :

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

Ve al directorio donde tienes 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 se debe especificar el nombre de ninguna base de datos.

mysqldump -u username -ppassword –all-databases > dump.sql

O puede usar algunos clientes de GUI como SQLyog para hacer esto.

8
Sathish D

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
victor

Pensé que podría ser útil para aquellos que usan Mac OS X :

/Applications/xampp/xamppfiles/bin/mysql -u root -p database < database.sql

Reemplace xampp con mamp u otros servidores web.

7
Giri

Mientras que la mayoría de las respuestas aquí solo mencionan el comando simple

mysql -u database_user -p [db_name] <database_file.sql

hoy en día es bastante común que las bases de datos y las tablas tengan una combinación de utf8 donde este comando no es suficiente. Al tener la combinación de utf8 en las tablas exportadas es necesario usar este comando:

mysql -u database_user -p --default-character-set = utf8 [db_name] <database_file.sql

Surley esto también funciona para otros juegos de caracteres, cómo se puede ver la notación correcta 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 tenía que crear una base de datos vacía. 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, la base de datos nunca tiene que crearse en un paso separado, lo que incluso podría causar un error en la importación. Por lo tanto, al importar, es recomendable mirar primero en el archivo para saber qué comandos se incluyen 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 base de datos, considere buscar también la versión correspondiente del manual. Los enlaces mencionados se refieren a la versión 5.7 de MySQL.

6
David
mysql -u root -p password -D database_name << import.sql

Utilice la ayuda de mysql para obtener más información 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 importamos 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. Otros, consulte 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
6
Siva Praveen

A veces, el puerto definido así como el servidor dirección IP de esa base de datos también son importantes ...

mysql -u user -p user -h <Server IP> -P<port> (DBNAME) < DB.sql 
5
JohnSharath

Seguí corriendo en el problema donde no se creó la base de datos.

Lo arreglé así

mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql
5
David Silva Smith

Para fines de copia de seguridad, cree un archivo BAT y ejecute este archivo BAT con Task Scheduler . 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 ejecútelo 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
user3728517

De manera 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

Ejecución de Fedora 26 con MariaDB.

4
jozxyqk

Para obtener información, solo tuve la raíz predeterminada + sin contraseña, no funciona con todas las respuestas anteriores. 

  • He creado un nuevo usuario con todos los privilegios y una contraseña. Funciona. 

  • -password SIN ESPACIO. 

4
Paul Leclerc

Estoy usando Windows 10 con Powershell 5 y encontré que casi todas las soluciones "tipo Unix" 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 answer btw.

4
Fery Wardiyanto

Los siguientes pasos ayudan a cargar file.sql a la base de datos MySQL.

Paso 1: suba file.sql.Zip a cualquier directorio y descomprima 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
Ingrese la contraseña y espere hasta que se complete la carga.

4
Ramesh Sinha

Proporcionar credenciales en la línea de comandos no es una buena idea. Las respuestas anteriores son geniales, pero no mencionan

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. Aquí hay una muestra,

[client]
Host=hostname.domainname
user=dbusername
password=dbpassword
3
ChuckCottrill

Importar en la base de datos: -

mysql -u nombre_usuario -p nombre_base de datos </ ruta de archivo/nombre_archivo.sql

Exportar desde la base de datos: -

mysqldump -u nombre_usuario -p nombre_base de datos>/ruta de archivo/nombre_archivo.sql

después de estos comandos, el sistema le pedirá su contraseña de mysql

3
NeeruSingh

Si importa datos en un contenedor de ventana acoplable, use el siguiente comando. Ajuste el usuario (-u), la base de datos (-D), el puerto (-P) y el Host (-h) para que se ajuste a su configuración.

mysql -u root -D database_name -P 4406 -h localhost --protocol=tcp -p < sample_dump.sql
2
Hamfri

Si está utilizando MAMP en Mac OS X, esto puede ser útil:

/applications/MAMP/library/bin/mysql -u MYSQL_USER -p DATABASE_NAME < path/to/database_sql/FILE.sql

MYSQL_USER es root por defecto.

1
HowardDuck

Exportar bases de datos particulares:

 djimi:> mysqldump --user=root --Host=localhost --port=3306 --password=test -B CCR KIT > ccr_kit_local.sql

Esto exportará las bases de datos CCR y KIT ...

Importe todas las bases de datos exportadas a una instancia de MySQL en particular (tiene que estar donde está su archivo de volcado):

  djimi:> mysql --user=root --Host=localhost --port=3306 --password=test < ccr_kit_local.sql
1
Musa

Para importar la base de datos a través de terminal

Navegue a la carpeta donde se encuentra el archivo sql

el comando ejecutar debajo

mysql -u database_user_name -p database_name < sql_file_name.sql

Se le pedirá la contraseña. introduzca la contraseña de la base de datos. Tomará unos segundos importar datos en la base de datos.

1
Dev Semicolon

Por ejemplo

Instalé el software en C:\xampp\mysql\bin Y mi archivo está en la dirección C:\Users\file.sql

Solo establece username y database_name

Nota: Primero debe crear la base de datos (database_name) manualmente

Ejecuta este comando:

cd C:\xampp\mysql\bin && mysql -u username -p database_name < C:\Users\file.sql

Y luego ingrese la contraseña ???? 

1
Mahdi Bashirpour

Si su carpeta tiene varios archivos SQL y ha instalado Git Bash puede usar este comando para importar varios archivos:

cd /my-project/data

cat *.sql | /c/xampp/mysql/bin/mysql -u root -p 1234 myProjectDbName
1
o0omycomputero0o

Desde Windows puede usar el siguiente comando para importar datos desde un volcado de SQL

C:\Archivos de programa\MySQL\MySQL Server 5.7\bin> mysql -u <> -p <> DBName <filelocation\query.sql

donde -u seguido de nombre de usuario y -p seguido de contraseña Mysql. La contraseña se puede omitir en el comando, ya que se puede ingresar en Solicitud.

1
Ripudaman Singh

Puedes probar esta consulta.

Exportar: Mysqldump -u nombre de usuario –-password = nombre de la base de datos de contraseña_de_usuario> archivo.sql

Importar: Mysql -u nombre de usuario –-password = su_control_de_la_datos nombre_base_datos <archivo.sql

y detalle siguiendo este enlace:

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

1

Si está importando a su servidor de base de datos local, puede hacer lo siguiente:

mysql -u database_user -p < database_file.sql

Para el servidor de base de datos remoto haga lo siguiente:

mysql -u database_user -p -h remote_server_url < database_file.sql
0

Puedes usar:

mysql -u<user> -p<pass> <db> < db.sql

ejemplo:

mysql -uroot -proot db < db.sql

adiós!