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

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

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

 database_name < file.sql 

Não está funcionando, recebo erros de syntax.

  • Como posso importar este arquivo sem um problema?
  • Preciso criar um database primeiro?

Experimentar:

 mysql -u username -p database_name < file.sql 

Verifique as opções do MySQL .

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

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

Um uso comum do mysqldump é fazer um backup de um database 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 prompt de comando do Windows :

 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; 

Quanto ao tempo gasto para importar arquivos enormes: 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 ; 

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

  mysql> use db_name; mysql> source file_name.sql; 

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 senha for password . E você tem um nome de bank 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 
  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 database no MySQL.
  5. Use esse database específico para o qual você deseja importar o arquivo SQL.
  6. Digite source databasefilename.sql e Enter
  7. Seu arquivo SQL é enviado com sucesso.

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

 mysql -u username -p database_name < file.sql 

se você não precisa criar o database relevante (vazio) no MySQL, para 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 database e use-o

 mysql>create database yourDatabaseName; mysql>use yourDatabaseName; 

Em seguida, importe o arquivo sql ou dump para o database

 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.

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

 Use your_database_name; SOURCE path_to_db_sql_file_on_your_local; 

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 

Para importar um único database, use o seguinte comando.

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

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

 mysql -u username -p password < dump.sql 

Para despejar um database em um arquivo SQL, use o seguinte comando

 mysqldump -u username -p database_name > database_name.sql 

Para importar um arquivo SQL para um database (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 

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

 zcat database_file.sql.gz | mysql -u username -p -h localhost database_name 
 mysql --user=[user] --password=[password] [database] < news_ml_all.sql 

Você não precisa especificar o nome do database na linha de comandos se o arquivo .sql contiver 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 permissions para criar o database, se o database mencionado no arquivo .sql não existir.

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

Adicione a opção --force :

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

Importar um database

  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 database

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

     \.DbName.sql 

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

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

Substitua o xampp por mamp ou outros servidores da web.

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

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

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

Para fins de backup, crie um arquivo BAT e execute esse arquivo BAT usando o Agendador de Tarefas . Será necessário um backup do database; basta copiar a seguinte linha e colar no bloco de notas e, em seguida, salve 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 

Às vezes, a porta definida, bem como o endereço IP do servidor desse database, também é importante …

 mysql -u user -p user -h  -P (DBNAME) < DB.sql 

Continuei correndo para o problema em que o database não foi criado.

Eu consertei assim

 mysql -u root -e "CREATE DATABASE db_name" mysql db_name --force < import_script.sql 

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.

  • -ppassword SEM ESPAÇO.

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

Use mysql help para detalhes mysql --help

Eu acho que estas 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 grande database 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 

As etapas a seguir ajudam a carregar file.sql no database MySQL.

Passo 1: Faça o upload de file.sql.zip para qualquer diretório e descompacte o arquivo
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.

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 

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.

Graças a resposta de @ Francesco Casula btw.

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

  1. O database 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.

Importar para o database: –

mysql -u username -p database_name

Exportar da base de dados: –

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

após esses comandos solicitará sua senha do mysql