「MySQL Workbench」をバッチで動かすことはできますか?
解決したいこと
現在「MySQL Workbench 8.0CE」を使って手動でやっていることを、自動で行いたいと思っています。
以下の処理をバッチで動かすことはできるのでしょうか?
なお、環境はWindows11です。
①「MySQL Workbench 8.0CE」の起動
②2つあるコネクションのAに接続
③SQLファイルを開く
④SQL実行
⑤結果をファイルに保存
現在「MySQL Workbench 8.0CE」を使って手動でやっていることを、自動で行いたいと思っています。
以下の処理をバッチで動かすことはできるのでしょうか?
なお、環境はWindows11です。
①「MySQL Workbench 8.0CE」の起動
②2つあるコネクションのAに接続
③SQLファイルを開く
④SQL実行
⑤結果をファイルに保存
↓ こちらでしょうか?
@baobao-mizho
Questioner
@nak435さん、ご回答ありがとうございます。
このバッチだとMySQLサーバがローカルの場合ですよね?
サーバがクラウドの時はどのようになるかご存じでしょうか?
以下のコマンドをバッチファイルに書いて実行してはどうでしょうか。
バッチ実行の出力をリダイレクトすれば、結果がファイルに保存されると思います。
mysql -h hostname -u user -ppassword -e "use mydb; select * form mytable;"
mysql -h hostname -u user -ppassword -D "mydb" < sqlfile.sql
@baobao-mizho
Questioner
@nak435さん、ご回答ありがとうございます。
sqlファイルが使えると今の資産を活用できるので楽そうです。
本番のデータベースでテストするのはドキドキするので、来週テスト環境でやってみたいと思います。
Workbenchを起動せずに、 batでMySQLクライアントを直接実行 するんじゃダメなんですかね?
@baobao-mizho
Questioner
@oh_jigさん、ご回答ありがとうございます。
このバッチだとMySQLサーバがローカルの場合ですよね?
サーバがクラウドの時はどのようになるかご存じでしょうか?
環境変数のDB_HOST
,DB_PORT
で指定するか、コマンドオプションの--host
(-h
)、--port
(-P
)で指定します。
あえて、localhost
のデータベースに接続するなら下記のようになります。localhost
の部分を書き換えれば、リモートのDBに接続できますよ。
@echo off
REM MySQLSQLのbinディレクトリ
set MYSQLPATH=C:\Program Files\MySQL\MySQL Server 8.0\bin\
REM 接続情報
set USER_ID=root
set PASS=abc123
set DB_NAME=house_work
set DB_HOST=localhost
set DB_PORT=3306
set OPTION=--default-character-set=utf8
"%MYSQLPATH%mysql.exe" %OPTION% -h %DB_HOST% -P %DB_PORT% -u %USER_ID% -p%PASS% -D %DB_NAME%
@baobao-mizho
Questioner
@oh_jigさん、ご回答ありがとうございます。
localhostを変えればリモートのDBに接続できるのですね。
本番のデータベースでテストするのはドキドキするので、来週テスト環境でやってみたいと思います。
@baobao-mizho
Questioner
@tumee さん、ご回答ありがとうございます。
コマンドで操作できるようになったら、タスクスケジューラに入れようと思っていました!
皆様のアドバイスを参考にやっていますが、まだ上手くできていません。
SSH経由でアクセスする必要があるのと、いろいろ制限のかかっているPCだからかもしれません。
もう少し試行錯誤してみます。