web-dev-qa-db-ja.com

MySQLでSQLスクリプトを実行する方法

MySQLで、SQLクエリを含むテキストファイルを実行したいです。

私はsource /Desktop/test.sqlを実行しようとしました、そして、エラーを受けました:

mySQL>。\home\sivakumar\Desktop\test.sqlエラー:ファイル '\ home\sivakumar\Desktop\test.sql'を開けませんでした、エラー:2

私が間違っていることについて何か考えはありますか?

323
user1160432

MySQLのコマンドラインmysql>を使用している場合は、SQLファイルをsourceとして宣言する必要があります。

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

たくさんの選択肢があります。

  • mySQLコマンドラインクライアントを使用します。mysql -h hostname -u user database < path/to/test.sql
  • MySQL GUIツールをインストールしてSQLファイルを開き、それを実行します
  • データベースがWebサーバー経由で利用できる場合はphpmysqlを使用してください。
128
Eugen Rieck

次のコマンドを使用して、テキストファイルに書き込まれたmysqlステートメントを実行できます。

mysql -u yourusername -p yourpassword yourdatabase < text_file

データベースがまだ作成されていない場合は、まず以下のコマンドを使用してMySQLにログインします。

mysql -u yourusername -p yourpassword yourdatabase

その後:

mysql>CREATE DATABASE a_new_database_name

その後:

mysql -u yourusername -p yourpassword a_new_database_name < text_file

それはそれをすべきです!

ここでより多くの情報: http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html

110
Paul Preibisch

すべてのトップの答えはいいです。しかし、万が一誰かがリモートサーバ上のテキストファイルからクエリを実行したい場合は _と_ (コンソールに表示する代わりに)結果をファイルに保存することができます。

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

これが誰かに役立つことを願っています。

43
Bhushan

それをするための私のお気に入りのオプションは次のようになります。

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

なぜならあなたが間違ったパスやスペースとのミス、そしておそらく私が遭遇しなかった文字に関するより多くの問題を避けるためです。


@elcucoのコメントでは、以前にこのコマンドを[space]と一緒に使用することをお勧めしていますので、履歴に保存することを無視するようbashに指示します。

それでもコマンドを履歴に保存している場合は、次の解決策を参照してください。

コマンドを履歴に入れずに実行する


追加のセキュリティ編集

万が一のために、次のコマンドを使用してコマンドライン入力にパスワードを入力してください。

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

私はここでもこの答えを探しています、そしてここで私が見つけたものが私にとって最もうまくいくことがわかります:注意私はUbuntu 16.x.xを使っています

  1. 以下を使用してmysqlにアクセスします。

mysql -u <your_user> - p

  1. Mysqlのプロンプトで、次のように入力します。

source file_name.sql

お役に立てれば。

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

一重引用符を指定しないでください。

上記のコマンドが機能しない場合は、ファイルをc:ドライブにコピーしてやり直してください。以下に示すように、

mysql> source C:\fn_Split.sql
14

.sqlファイルのパスを次のように指定します。

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

See In The Image:

13
Shubham Verma

パスワード引数をコマンドラインから直接渡すことは決してお勧めできません。これは~/.bash_historyファイルに保存され、他のアプリケーションからアクセスできるようになります。

代わりにこれを使ってください。

mysql -u user --Host host --port 9999 database_name < /scripts/script.sql -p
Enter password:
11
mysql -uusername -ppassword database-name < file.sql

おそらく、スラッシュ/ブラックスラッシュを変更する必要があります。

 \home\sivakumar\Desktop\test.sql

 /home/sivakumar/Desktop/test.sql

そのため、コマンドは次のようになります。

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

mysqlコマンドで以下のように使用します。プロンプト -

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

引用符を付けないでください。パス にスペース( '')が含まれていても use まったく引用符なし

6
Rajesh Paul

将来の参照のために、私はこれがあなたのmsqlコンソールのウィンドウズの下で、前述の方法に対して働くことがわかった:

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

あなたのルートドライブが "c"と呼ばれていない場合は、単にあなたのドライブが呼ばれているものと交換してください。最初にバックスラッシュを試し、うまくいかない場合はスラッシュを試します。それらも動作しない場合は、ファイル名にフルファイルパス、拡張子.sqlがあることを確認し、バージョンにセミコロンが付いている場合は、そこにあることを確認してやり直してください。

3
Chad Mx

mysql -u yourusername -p yourpassword yourdatabase < text_fileはリモートサーバー(Amazon EC2)では動作しなかったので...

データベースが最初に作成されていることを確認してください。

その後:

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

それを行うには多くの方法。

From Workbench: File > Run SQL Script -- then follow prompts

From Windows Command Line:
   Option 1: mysql -u usr -p
             mysql> source file_path.sql
   Option 2: mysql -u usr -p '-e source file_path.sql'
   Option 3: mysql -u usr -p < file_path.sql
   Option 4: put multiple 'source' statements inside of file_path.sql (I do this to drop and recreate schemas/databases which requires multiple files to be run)
             mysql -u usr -p < file_path.sql

コマンドラインからエラーが発生した場合は、以前に実行したことを確認してください

cd {!!>>mysqld.exe home directory here<<!!}
mysqld.exe --initialize 

これはmysqld.exeディレクトリ内、つまりCDから実行する必要があります。

これが役立つだけでなく、冗長であることを願っています。

1
DonkeyKong

私はこのエラーを抱えていて、私が無駄になることができるすべてのアドバイスを試してみました。

最後に、問題は私のフォルダがフォルダパスにスラッシュとして現れるフォルダ名にスペースがあることでした。

0
user3753416

リダイレクトの代わりに、次のようにします。

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

これはファイルpath-to-sql-fileを実行します

0
DWGuru