it-swarm-pt.tech

Como importar um arquivo SQL usando a linha de comando no MySQL?

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

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

database_name < file.sql

Não está funcionando, eu recebo erros de sintaxe.

  • Como posso importar este arquivo sem um problema?
  • Preciso criar um banco de dados primeiro?
1511
Jaylen

Experimentar:

mysql -u username -p database_name < file.sql

Verifique Opções do MySQL .

Note-1: É melhor usar o caminho completo do arquivo SQL file.sql.

Nota-2: Use -R e --triggers para manter as rotinas e os acionadores do banco de dados original. Eles não são copiados por padrão.

Note-3 Você pode ter que criar o banco de dados (vazio) a partir do mysql se ele ainda não existir e o SQL exportado não contiver CREATE DATABASE (exportado com a opção --no-create-db ou -n), antes que você possa importá-lo.

2955
bansi

Um uso comum de mysqldump é para fazer um backup de um banco de dados inteiro:

Shell> mysqldump db_name > backup-file.sql

Você pode carregar o arquivo de despejo de volta para o servidor da seguinte forma:

UNIX

Shell> mysql db_name < backup-file.sql

O mesmo no comando Windows 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 comando do MySQL

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

Quanto ao tempo gasto para importar arquivos grandes: mais importante, leva mais tempo porque a configuração padrão do MySQL é autocommit = true. Você deve definir isso antes de importar seu arquivo e, em seguida, verificar como a importação funciona como uma jóia.

Você só precisa fazer o seguinte:

mysql> use db_name;

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

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

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

Podemos usar este comando para importar o SQL a partir da linha de comando:

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

Por exemplo, se o nome de usuário 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

Lembre-se de onde está o seu arquivo SQL. Se o seu arquivo SQL estiver na pasta/diretório Desktop, vá para o diretório desktop e insira o comando da seguinte forma:

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

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

~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql
60
Amrit Dhungana
  1. Abra a linha de comando do MySQL
  2. Digite o caminho do diretório mysql bin e pressione Enter
  3. Cole seu arquivo SQL dentro da pasta bin do servidor mysql.
  4. Crie um banco de dados no MySQL.
  5. Use esse banco de dados específico para o qual você deseja importar o arquivo SQL.
  6. Digite source databasefilename.sqlEnter
  7. Seu arquivo SQL é enviado com sucesso.
57
user4412947

Se você já tiver o banco de dados, use o seguinte para importar o arquivo dump ou sql

mysql -u username -p database_name < file.sql

se você não precisa criar o banco de dados relevante (vazio) no MySQL, para que o primeiro logon no console MySQL, executando o seguinte comando no terminal ou no cmd

mysql -u userName -p;

e quando solicitado, forneça a senha.

Em seguida, crie um banco de dados e use-o

mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;

Em seguida, importe o arquivo sql ou dump para o banco de dados

mysql> source pathToYourSQLFile;

Nota: se o seu terminal não estiver no local onde o arquivo dump ou sql existe, use o caminho relativo acima.

44
Kasun Siyambalapitiya

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

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
40
Shiks

Vá para o diretório onde você tem o executável do MySQL. -u para nome de usuário e -p para Solicitar a senha:

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

Para importar um único banco de dados, use o seguinte comando.

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

Para importar vários despejos de banco de dados, use o seguinte comando.

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

Eu acho que vale a pena mencionar que você também pode carregar um arquivo gzipped (comprimido) com zcat como mostrado abaixo:

zcat database_file.sql.gz | mysql -u username -p -h localhost database_name
23
Francesco Casula

Para despejar um banco de dados em um arquivo SQL, use o seguinte comando

mysqldump -u username -p database_name > database_name.sql

Para importar um arquivo SQL para um banco de dados (verifique se você está no mesmo diretório que o arquivo SQL ou forneça o caminho completo para o arquivo)

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

A maneira mais fácil de importar para o seu esquema:

Entre no mysql e emita abaixo os comandos mencionados. 

mysql> use your_db_name;

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

Para importar vários arquivos SQL de uma 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 o XAMPP:

C:\xampp\mysql\bin\mysql -u root -pPassword DataBase < data.sql
13
Abdul Rehman Janjua

Você não precisa especificar o nome do banco de dados na linha de comando se o arquivo .sql contiver instruções CREATE DATABASE IF NOT EXISTS db_name e USE db_name.

Apenas certifique-se de estar se conectando a um usuário que tenha as permissões para criar o banco de dados, se o banco de dados mencionado no arquivo .sql não existir.

12
Reuben

Importar um banco de dados

  1. Vá para dirigir:

    command: d:
    
  2. Login do MySQL

    command: c:\xampp\mysql\bin\mysql -u root -p
    
  3. Ele vai pedir pwd. Digite:

    pwd
    
  4. Selecione o banco de dados

    use DbName;
    
  5. Forneça o nome do arquivo

    \.DbName.sql
    
11
Pritam Chaudhari

Adicione a opção --force :

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

Vá para o diretório onde você tem o MySQL.

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

Além disso, para descarregar todos os bancos de dados, use a opção -all-databases e nenhum nome de banco de dados precisa ser especificado.

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

Ou você pode usar alguns clientes da GUI, como o SQLyog, para fazer isso.

8
Sathish D

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

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

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

Substitua xampp por mamp ou outros servidores da web.

7
Giri

Enquanto a maioria das respostas aqui apenas menciona o comando simples

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

hoje é bastante comum que bancos de dados e tabelas possuam collation utf8 onde este comando não é suficiente. Tendo o utf8-collation nas tabelas exportadas, é necessário usar este comando:

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

Surley isso funciona para outros conjuntos de caracteres também, como mostrar a notação correta pode ser visto aqui:

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

Um comentário também mencionou que, se um banco de dados nunca existisse, um banco de dados vazio teria que ser criado primeiro. Isso pode estar certo em alguns casos, mas depende do arquivo de exportação. Se o arquivo exportado já incluir o comando para criar o banco de dados, o banco de dados nunca precisará ser criado em uma etapa separada, o que pode até causar um erro na importação. Portanto, ao importar, é aconselhável dar uma olhada primeiro no arquivo para saber quais comandos estão incluídos lá. Na exportação, é aconselhável observar as configurações, especialmente se o arquivo for muito grande e difícil de ler em um editor.

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

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

Se você usar outra versão de banco de dados, considere pesquisar também a versão correspondente do manual. Os links mencionados referem-se ao MySQL versão 5.7.

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

Use a ajuda do mysql para detalhes mysql --help

Eu acho que essas serão opções úteis em 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 importando um banco de dados grande e não tendo uma barra de progresso. Use o Pipe Viewer e veja a transferência de dados através do pipe

Para Mac, brew install pv Para Debian/Ubuntu, apt-get install pv. Outros, 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

Às vezes, a porta definida, bem como o servidor endereço IP desse banco de dados também importa ...

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

Continuei correndo para o problema em que o banco de dados não foi criado.

Eu consertei assim

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

Para fins de backup, crie um arquivo BAT e execute esse arquivo BAT usando Task Scheduler . Levará um backup do banco de dados; apenas copie a seguinte linha e cole em Notepad e salve o arquivo .bat e execute-o 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
user3728517

Similarmente a https://stackoverflow.com/a/17666285/1888983
Principais diferenças para mim:

  1. O banco de dados deve existir primeiro
  2. Nenhum 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

Executando o Fedora 26 com o MariaDB.

4
jozxyqk

Para obter informações, eu só tinha raiz padrão + sem senha, não funciona com todas as respostas acima. 

  • Eu criei um novo usuário com todos os privilégios e uma senha. Funciona. 

  • -palavra-chave SEM ESPAÇO. 

4
Paul Leclerc

Estou usando o Windows 10 com o Powershell 5 e descobri que quase todas as soluções "unix-like" 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

Eu acabo usando este comando.

> type my-database.sql | mysql -u[username] -h[localhost] -p [database-name]

e funciona perfeitamente, espero que ajude.

Obrigado a @ Francesco Casula 's answer btw.

4
Fery Wardiyanto

As etapas a seguir ajudam a carregar file.sql no banco de dados MySQL.

Passo 1: Carregue file.sql.Zip para qualquer diretório e descompacte 
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

Etapa 3: mysql -u username -p database-name < file.sql
Digite a senha e aguarde até que o upload seja concluído.

4
Ramesh Sinha

Fornecer credenciais na linha de comando não é uma boa ideia. As respostas acima são ótimas, mas deixam de mencionar

mysql --defaults-extra-file=etc/myhost.cnf database_name < file.sql

Onde etc/myhost.cnf é um arquivo que contém Host, 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
ChuckCottrill

Importar para o banco de dados: -

mysql -u username -p database_name </ caminho do arquivo/nome_do_arquivo.sql

Exportar da base de dados: -

mysqldump -u username -p database_name>/caminho do arquivo/file_name.sql

após esses comandos o Prompt irá pedir sua senha do mysql

3
NeeruSingh

Se importar dados para um contêiner docker, use o seguinte comando. Ajuste usuário (-u), banco de dados (-D), porta (-P) e Host (-h) para ajustar sua configuração.

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

Se você estiver usando MAMP no Mac OS X, isso pode ser útil:

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

MYSQL_USER é root por padrão.

1
HowardDuck

Exportar bancos de dados específicos:

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

Isso exportará os bancos de dados CCR e KIT ...

Importe todos os bancos de dados exportados para uma instância específica do MySQL (você precisa estar onde seu arquivo de despejo está):

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

Para importar banco de dados via terminal

Navegue até a pasta onde o arquivo sql está localizado

a corrida abaixo do comando

mysql -u database_user_name -p database_name < sql_file_name.sql

Ele pedirá senha. insira a senha do banco de dados. Levará alguns segundos para importar dados no banco de dados.

1
Dev Semicolon

Por exemplo

Eu instalei o software em C:\xampp\mysql\bin E meu arquivo está no endereço C:\Users\file.sql

Basta definir username e database_name

Nota: Primeiro você precisa criar o banco de dados (database_name) manualmente

Execute este comando:

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

E então insira a senha ???? 

1
Mahdi Bashirpour

Se a sua pasta tiver vários arquivos SQL e você tiver instalado o Git Bash , você poderá usar este comando para importar vários arquivos:

cd /my-project/data

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

Das janelas você pode usar o comando abaixo para importar dados do sql dump

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

onde -u seguido pelo nome de usuário e -p seguido pela senha do Mysql. A senha pode ser ignorada no comando, pois ela pode ser inserida no prompt.

1
Ripudaman Singh

Você pode tentar esta consulta.

Exportar: Mysqldump -u nome_do_usuário –-password = sua_senha nome_do_banco_de_dados_de_dados> arquivo.sql

Importar: Mysql -u nome_do_usuário –-password = sua_password nome_do_banco_de_dados <arquivo.sql

e detalhe seguindo este link:

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

1
Md Shariful Islam

Se você estiver importando para o servidor de banco de dados local, poderá fazer o seguinte:

mysql -u database_user -p < database_file.sql

Para o servidor de banco de dados remoto, faça o seguinte:

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

Você pode usar:

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

exemplo:

mysql -uroot -proot db < db.sql

tchau!

0