Como importar um ficheiro SQL com a linha de comandos do MySQL?

tenho um ficheiro .sql com uma exportação de phpMyAdmin. Eu quero importá-lo para um servidor diferente usando a linha de comando.

eu tenho uma instalaçãoWindows Server 2008 R2. Eu coloquei o arquivo .sql no unidade C, e eu tentei este comando.

database_name < file.sql
Não está a funcionar. tenho erros de sintaxe.

    Como posso importar este ficheiro sem problemas? Preciso de criar uma base de dados primeiro?
Author: DineshDB, 2013-07-16

30 answers

Tenta:

mysql -u username -p database_name < file.sql

Verifique As Opções Do MySQL .

Nota-1: é melhor usar a localização completa do ficheiro SQL file.sql.

Nota-2: usar -R e --triggers para manter as rotinas e gatilhos da base de dados original. Eles não são copiados por padrão.

 2698
Author: bansi, 2018-01-18 09:50:24

Um uso comum de mysqldump é para fazer uma cópia de segurança de uma base de dados inteira:

shell> mysqldump db_name > backup-file.sql

Você pode carregar o ficheiro dump de volta para o servidor assim:

UNIX

shell> mysql db_name < backup-file.sql

O mesmo em Windows comando prompt:

mysql -p -u [user] [database] < backup-file.sql

PowerShell

C:\> cmd.exe /c "mysql -u root -p db_name < backup-file.sql"

Linha de comandos MySQL

mysql> use db_name;
mysql> source backup-file.sql;
 549
Author: vladkras, 2018-05-27 17:54:04

Em relação ao tempo necessário para a importação de ficheiros enormes: mais importante ainda, demora mais tempo porque a configuração predefinida do MySQL é autocommit = true. Você deve ativar isso antes de importar o seu arquivo e, em seguida, verificar como a importação funciona como uma jóia.

Só tens de fazer a seguinte coisa:

mysql> use db_name;

mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
 227
Author: Paresh Behede, 2016-10-13 14:53:45

Entre todas as respostas, para o problema acima, este é o melhor:

 mysql> use db_name;
 mysql> source file_name.sql;
 80
Author: Manoj Kumar, 2016-08-18 12:12:06

Podemos usar este comando para importar SQL da linha de comandos:

mysql -u username -p password db_name < file.sql

Por exemplo, se o Utilizador for root e a senha for password. E você tem um nome de banco de dados como bank e o arquivo SQL é bank.sql. Então, simplesmente faça assim:

mysql -u root -p password bank < bank.sql
Lembra-te onde está o teu ficheiro SQL. Se o seu ficheiro SQL estiver na pasta/pasta Desktop, Então vá para a pasta do ambiente de trabalho e indique o comando assim:
~ ? cd Desktop
~/Desktop ? mysql -u root -p password bank < bank.sql

E se estiver no directório Project e o seu ficheiro SQL estiver no Desktop directório. Se você quiser acessá-lo a partir do diretório Project então você pode fazer assim:

~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql
 53
Author: Amrit Dhungana, 2015-03-19 17:51:30
  1. Abra a linha de comandos MySQL
  2. Escreva a localização do seu directório de bin mysql e carregue em indique
  3. cole o seu ficheiro SQL dentro da pasta bin do servidor de mysql.
  4. Cria uma base de dados no MySQL.
  5. Use essa base de dados em particular onde deseja importar o ficheiro SQL.
  6. Tipo source databasefilename.sql e indique
  7. o seu ficheiro SQL foi enviado com sucesso.
 48
Author: user4412947, 2015-03-19 18:10:20

Se já tiver a base de dados use o seguinte para importar o dump ou o sql ficheiro

mysql -u username -p database_name < file.sql

Se não precisar de criar a base de Dados relevante (vazia) no MySQL, para o primeiro registo na consola {[[6]}, executando o seguinte comando no terminal ou no cmd

mysql -u userName -p;

E quando solicitado, indique a senha.

Em seguida, crie uma base de dados e use-a

mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;

Depois importar o sql ou o ficheiro dump para a base de dados de

mysql> source pathToYourSQLFile;

Nota: Se o seu terminal não estiver no local onde o ficheiro dump ou sql existe, use a localização relativa em cima.

 38
Author: Kasun Siyambalapitiya, 2017-10-12 07:01:56

Uma solução que funcionou para mim está abaixo:

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
 37
Author: Shiks, 2018-03-21 18:31:18

Vá para a pasta onde tem o executável MySQL. -u para o utilizador e -p para pedir a senha:

C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql
 29
Author: Tanmay Patel, 2015-03-19 17:57:36

Para importar uma única base de dados, use o seguinte comando.

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

Para importar vários dumps de bases de dados, use o seguinte comando.

mysql -u username -p password < dump.sql
 22
Author: Leopathu, 2018-02-08 17:50:53

Para enviar uma base de dados para um ficheiro SQL use o seguinte comando

mysqldump -u username -p database_name > database_name.sql

Para importar um ficheiro SQL para uma base de dados (certifique-se que está na mesma pasta que o ficheiro SQL ou forneça a localização completa do ficheiro)

mysql u -username -p database_name < database_name.sql
 18
Author: Adeleke Akinade, 2017-01-04 17:42:50

Acho que vale a pena mencionar que você também pode carregar umgzipped (comprimido) com zcat Como mostrado abaixo:

zcat database_file.sql.gz | mysql -u username -p -h localhost database_name
 18
Author: Francesco Casula, 2017-03-01 10:55:38
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
 14
Author: user3546602, 2015-01-08 14:09:16

Para importar vários ficheiros SQL de uma só vez, use isto:

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

Para importação simples:

# 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, 2018-03-21 18:32:30

Você não precisa especificar o nome da base de dados na linha de comandos se o .o ficheiro sql contém declarações CREATE DATABASE IF NOT EXISTS db_name e USE db_name.

Certifique-se apenas de que está a ligar-se a um utilizador que tem as permissões para criar a base de dados, se a base de dados mencionada no .o ficheiro sql não existe.

 10
Author: Reuben, 2016-07-02 09:37:39

Importar uma base de dados

  1. Vai conduzir:

    command: d:
    
  2. Login MySQL
    command: c:\xampp\mysql\bin\mysql -u root -p
    
  3. Vai pedir pwd. Digite:
    pwd
    
  4. Seleccione a base de Dados

    use DbName;
    
  5. Indique o nome do ficheiro

    \.DbName.sql
    
 10
Author: Pritam Chaudhari, 2016-07-02 09:41:33

Adicione o --force Opção:

mysql -u username -p database_name --force < file.sql
 8
Author: ktaria, 2016-07-02 09:40:03

Eu pensei que poderia ser útil para aqueles que estão usando Mac OS X:

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

Substituir xampp por mamp ou outros servidores web.

 7
Author: Giri, 2015-03-19 17:58:53

O seguinte comando funciona para mim a partir da linha de comandos (cmd) em Windows 7 em WAMP .

d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql
 7
Author: victor, 2015-03-19 18:14:22

Vá para o directório onde tem o MySQL.

 c:\mysql\bin\> mysql -u username -p password database_name <
 filename.sql

Também para descarregar todas as bases de dados, use a opção -all-databases, e já não é necessário indicar o nome das bases de dados.

mysqldump -u username -ppassword –all-databases > dump.sql
Ou podes usar alguns clientes GUI como o SQLyog para fazer isto.
 6
Author: Sathish D, 2015-03-19 17:49:09

Por vezes, a porta definida, assim como o endereço IP do servidor da base de dados também importa...

mysql -u user -p user -h <Server IP> -P<port> (DBNAME) < DB.sql 
 5
Author: JohnSharath, 2015-03-19 17:53:28

Para fins de salvaguarda, crie um ficheiro BAT e execute este ficheiro BAT com Escalonador de Tarefas. Ele terá uma cópia de segurança da base de dados; basta copiar a seguinte linha e colar em Notepad e, em seguida, salvar o .arquivo bat, e executá-lo em seu 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, 2015-03-19 17:56:39
Continuei a encontrar o problema onde a base de dados não foi criada.

Arranjei-o assim

mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql
 5
Author: David Silva Smith, 2016-08-11 05:02:36

Para informação que eu tinha o root + default withoutpassword, ele não funciona com todas as respostas acima.

  • Criei um novo utilizador com todos os privilégios e uma senha. Funciona.

  • -palavra-chave sem espaço.

 4
Author: Paul Leclerc, 2016-12-29 14:40:42

Estou a usar o Windows 10 com o Powershell 5 e encontrei quase todas as soluções "unix-like" que não funcionam para mim.

> 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

Acabo por usar este comando.

> type my-database.sql | mysql -u[username] -h[localhost] -p [database-name]
E funciona perfeitamente, espero que ajude.

Graças a @Francesco Casula's resposta btw.

 4
Author: Fery Wardiyanto, 2017-05-23 10:31:37

Da mesma forma que https://stackoverflow.com/a/17666285/1888983
Diferenças fundamentais para mim:

  1. a base de dados tem de existir primeiro
  2. não há espaço entre -p e a senha

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
A correr o fedora 26 com a MariaDB.
 4
Author: jozxyqk, 2017-08-08 19:30:03
mysql -u root -p password -D database_name << import.sql

Usar a ajuda do mysql para mais detalhes mysql --help

Penso que estas serão opções úteis no nosso 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.
O que é divertido, se estamos a importar uma grande base de dados e não temos uma barra de progresso. Use o Visualizador de tubos e veja a transferência de dados através do pipe

Para Mac, brew install pv .Para Debian / Ubuntu, apt-get install pv. Outros, consultar 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, 2017-12-18 18:40:09

Embora a maioria das respostas aqui apenas mencione o comando simples

Mysql-u database_user-p [db_name]

Hoje é bastante comum que bases de dados e tabelas tenham colação utf8 onde este comando não é suficiente. Tendo a colação utf8 nas tabelas exportadas, é necessário usar este comando:

Mysql-u database_user-p --default-character-set=utf8 [db_name]

Surley isto. funciona para outros charsets também, como mostrar a notação certa pode ser visto aqui:

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

Um comentário mencionado também que se uma base de dados nunca existir uma base de dados vazia teve de ser criada primeiro. Isto pode estar certo em alguns casos, mas depende do arquivo de exportação. Se o arquivo exportado já inclui o comando para criar o banco de dados, então o banco de dados nunca tem que ser criado em uma etapa separada, que até pode causar um erro na importação. Assim, na importação, é aconselhável dar uma olhada primeiro no arquivo para saber quais comandos são incluídos, na exportação é aconselhável observação as configurações, especialmente se o arquivo é muito grande e difícil de ler em um editor.

Existem ainda mais parâmetros para o comando que estão listados e explicados aqui:

Https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html

Se utilizar outro banco de Dados-versão considere procurar a versão correspondente do manual também. Os links mencionados referem-se ao MySQL versão 5.7.

 4
Author: David, 2018-08-07 18:11:40

Os seguintes passos ajudam a enviar {[[0]} para a base de dados MySQL.

Passo 1: Enviar file.sql.zip para qualquer pasta e abrir ali
nota: sudo apt-get install unzip : sudo apt-get unzip file.sql.zip
Passo 2: agora navegue para esse diretório. Exemplo: cd /var/www/html

Passo 3: mysql -u username -p database-name < file.sql
Digite a senha e espere até que o upload esteja completo.

 3
Author: Ramesh Sinha, 2015-03-19 18:12:24
Fornecer credenciais na linha de comando não é uma boa ideia. As respostas acima são grandes, mas negligenciam mencionar
mysql --defaults-extra-file=etc/myhost.cnf database_name < file.sql

Onde etc/myhost.cnf é um arquivo que contém máquina, usuário, senha, e você evita expor a senha na linha de comando. Aqui está uma amostra,

[client]
host=hostname.domainname
user=dbusername
password=dbpassword
 3
Author: ChuckCottrill, 2017-02-25 01:18:48