desenv-web-rp.com

Como executar o script SQL no MySQL?

Eu quero executar um arquivo de texto contendo consultas SQL, no MySQL.

Eu tentei executar source /Desktop/test.sql e recebi o erro:

mysql>.\home\sivakumar\Desktop\test.sql ERRO: Falha ao abrir o arquivo '\ home\sivakumar\Desktop\test.sql', erro: 2

Alguma ideia do que estou fazendo errado?

323
user1160432

Se você estiver na linha de comando do MySQL mysql>, será necessário declarar o arquivo SQL como source.

mysql> source \home\user\Desktop\test.sql;
367
Thomas Edwards

Você tem muitas opções:

  • use o cliente de linha de comando do MySQL: mysql -h hostname -u user database < path/to/test.sql
  • Instale as ferramentas GUI MySQL e abra seu arquivo SQL e execute-o
  • Use o phpmysql se o banco de dados estiver disponível através do seu servidor web
128
Eugen Rieck

você pode executar instruções mysql que foram escritas em um arquivo de texto usando o seguinte comando:

mysql -u yourusername -p yourpassword yourdatabase < text_file

se o seu banco de dados ainda não tiver sido criado, entre no seu mysql primeiro usando:

mysql -u yourusername -p yourpassword yourdatabase

então:

mysql>CREATE DATABASE a_new_database_name

então:

mysql -u yourusername -p yourpassword a_new_database_name < text_file

isso deve resolver!

Mais informações aqui: http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html

110
Paul Preibisch

Todas as respostas principais são boas. Mas apenas no caso de alguém querer executar a consulta a partir de um arquivo de texto em um servidor remotoEsalvar resultados em um arquivo (em vez de mostrar no console), você pode fazer isso:

mysql -u yourusername -p yourpassword yourdatabase < query_file > results_file

Espero que isso ajude alguém.

43
Bhushan

Minha opção favorita para fazer isso será:

 mysql --user="username" --database="databasename" --password="yourpassword" < "filepath"

Eu o uso desta maneira porque quando você o encadeia com "" você evitando caminhos errados e erros com espaços e - e provavelmente mais problemas com caracteres que eu não encontrei.


Com @elcuco comentar sugiro usar este comando com [espaço] antes para que diga bash para ignorar salvando no histórico, isso vai funcionar fora da caixa na maioria bash.

no caso de ainda guardar o seu comando no histórico, veja as seguintes soluções:

Execute o comando sem mantê-lo na história


extra security edit

Apenas no caso de você querer ser mais seguro, você pode usar o seguinte comando e digitar a senha na entrada da linha de comando:

mysql --user="username" --database="databasename" -p < "filepath"
36
talsibony

Eu vim aqui procurando por essa resposta também, e aqui está o que eu achei que funciona melhor para mim: Note que eu estou usando o Ubuntu 16.x.x

  1. Acesse o mysql usando:

mysql -u <your_user> - p

  1. No prompt do mysql, digite:

source file_name.sql

Espero que isto ajude.

15
Zac Smith
mysql> source C:\Users\admin\Desktop\fn_Split.sql

Não especifique aspas simples.

Se o comando acima não estiver funcionando, copie o arquivo para c: drive e tente novamente. como mostrado abaixo,

mysql> source C:\fn_Split.sql
14
Shankar Kalyankar

Dê o caminho do arquivo .sql como:

source c:/dump/SQL/file_name.sql;

See In The Image:

13
Shubham Verma

Nunca é uma boa prática passar o argumento da senha diretamente da linha de comando, ele é salvo no arquivo ~/.bash_history e pode ser acessado por outros aplicativos.

Use isso em vez disso:

mysql -u user --Host host --port 9999 database_name < /scripts/script.sql -p
Enter password:
11
Jorge E. Hernández
mysql -uusername -ppassword database-name < file.sql
8
Мартин Петров

Muito provavelmente, você só precisa alterar a barra/barra invertida: de

 \home\sivakumar\Desktop\test.sql

para

 /home/sivakumar/Desktop/test.sql

Então o comando seria:

source /home/sivakumar/Desktop/test.sql
7
Ben Lin

use o seguinte no comando mysql Prompt -

source \\home\\user\\Desktop\\test.sql;

Não use cotação. Mesmo se o caminho contiver espaço ('') use sem cotação .

6
Rajesh Paul

Para referência futura, descobri que isso funciona com os métodos mencionados acima, no Windows no seu console msql:

mysql >> source c://path_to_file//path_to_file//file_name.sql;

Se a sua unidade raiz não é chamada de "c", basta trocar com o que sua unidade é chamada. Primeiro tente barras invertidas, se elas não funcionarem, tente a barra. Se eles também não funcionarem, verifique se você tem o caminho completo do arquivo, a extensão .sql no nome do arquivo e se a sua versão insiste em ponto e vírgula, verifique se ele está lá e tente novamente.

3
Chad Mx

Como mysql -u yourusername -p yourpassword yourdatabase < text_file não funcionou em um servidor remoto (EC2 da Amazon) ...

Certifique-se de que o Banco de Dados seja criado primeiro.

Então:

mysql --Host=localhost --user=your_username --password=your_password your_database_name < pathTofilename.sql
2
Damir Olejar

Eu tive esse erro, e tentei todos os conselhos que eu poderia obter sem sucesso.

Finalmente, o problema era que minha pasta tinha um espaço no nome da pasta que aparecia como uma barra no caminho da pasta, uma vez que a encontrei e a removi, funcionou bem.

0
user3753416

em vez de redirecionamento eu faria o seguinte

mysql -h <hostname> -u <username> --password=<password> -D <database> -e 'source <path-to-sql-file>'

Isto irá executar o arquivo path-to-sql-file

0
DWGuru