概要
WindowsでMySQLのクライアントをインストールせずにリモートMySQLに接続し、データ取得してローカルPCにTSV出力します。
背景としては、ツールとして他のPCでMySQLでのデータ取得をインストールなしでサクッと使いたい場面がでてきました。バッチファイルで実行できるようにします。
環境
リモートサーバ Ubuntu 20.04 + MySQL 8.0.28
DB名 = test テーブル名 = test
ローカルPC Windows 10 Pro 21H2
ダウンロードしたMySQL Community Server 8.0.29
+------+--------------------------------+
| id | name |
+------+--------------------------------+
| 1 | 1234567890 |
| 1 | 1234567890 |
| 1 | 1234567890 |
| 1 | 1234567890 |
+------+--------------------------------+
大雑把な流れ
1.MySQL Community Serverをダウンロードする。
2.zipから必要なファイルを取り出す。
3.バッチファイルとsqlファイルを作る。
4.さらに必要なdllを集める。
5.1つのフォルダにまとめる。
6.実行する。
手順1 MySQL Community Serverをダウンロードする。
ここから、zipをダウンロードします。
アカウント作成などが必要になるかもしれません。
手順2 zipから必要なファイルを取り出す
ダウンロードしたzipの中binフォルダの中から、libcrypto-1_1-x64.dll、libssl-1_1-x64.dll、mysql.exeを取り出します。
手順3 バッチファイルとsqlファイルを作る
バッチファイルは同じディレクトリのtest.sqlを読み込んで、同じディレクトリにtest.tsvを出力するようにします。
mysql -u USER -pPASSWORD -h 88.88.88.88 -P 3306 < test.sql > test.tsv
sqlファイルは、SELECT文を書いておきます。
select * from test.test;
手順4 さらに必要なdllを集める
ここまでやっても他PCで動かない可能性があるので、さらにdllを集めます。
C:\Windows\System32の中から、msvcp140.dll、vcruntime140.dll、vcruntime140_1.dllをコピーして集めます。
※コピーしてペーストします。そのまま移動させると問題が出ます。
※ない場合はMicrosoft Visual C++ 2015-2022 Redistributableをインストールしてから集める必要があります。
手順5 1つのフォルダにまとめる
すべてのファイルを1つのフォルダにまとめます。mysql.exeを動かすには、同じディレクトリにdllを配置する必要があります。
手順6 実行する
他のPCにフォルダごと持って行ってバッチファイルをダブルクリックして実行します。
ネットワークがつながっていてフォルダ内にtest.tsvが出力されます。
id name
1 1234567890
1 1234567890
1 1234567890
1 1234567890
最後に
mysqlのコネクタ、ドライバなどいろいろ試してみましたが、やりたいことを実現するためにこんな感じになりました。
もっと良い方法もあるかもしれません。
tsvをcsvにすることもできると思います。私は置換してカンマに変えようと思います。
こちらの情報を参考にさせていただきました。