MySQL道普請便り

第235回MySQL Shell for VS Codeを活用してみる[その1]

今回は第232回 MySQL Shell for VS Codeをインストールしてみるで紹介したMySQL Shell for VS Code[1]を使い、基本的なデータを取得する方法を紹介していきます。

検証環境

今回はDockerで建てたMySQLを使用します。以下のコマンドでDockerを建てて、ローカルからアクセスします。

% docker run --platform linux/x86_64 -p 127.0.0.1:3307:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_USER=kk2170 -e MYSQL_PASSWORD=my-secret-pw -d mysql:8.4.3 --secure-file-priv='/tmp'

今回はMySQL Shellをインストールして実行していきますが、いったん従来のmysqlクライアントでアクセスが可能であることを確認しましょう。方法は以下の通りです。

% mysql -uroot -pmy-secret-pw -h127.0.0.1 -P3307

執筆時点では、以下の通りMySQL 8.4.3を使用しています。

mysql>  select version();
+-----------+
| version() |
+-----------+
| 8.4.3     |
+-----------+
1 row in set (0.01 sec)

今回はテストデータとして、第2回 MySQLにはじめてのデータを入れてみるで紹介されている「サンプルデータその3、KEN_ALL.CSV」のデータを利用して行うため、--secure-file-priv='/tmp'を指定しています。

コンテナ内にunzipが入っていないため、unzipからiconvまでのコマンドをローカルで実行し、docker cpでファイルを事前に送り、その後LOAD DATA INFILEを実行しています。

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statementというエラーが表示された場合は、KEN_ALL_CSV_UTF8.csvを置いたファイルが--secure-file-privで指定している'/tmp'配下にあるか確認してみてください。

VS Codeのインストールに関しては省略しますが、公式サイトからダウンロードしてインストールを行います。

SQLの結果を取り出したい

MySQL Shell for VS Codeを使用して取得した結果を任意の形式に変換して、取得することができます。今回は、北海道が都道府県として設定されている行をすべて表示したい場合を考えます。

クエリとしてはSELECT * FROM zipcode WHERE prefecture = '北海道';のようなものを使用します。このクエリをNotebookに入力して結果を取得してみましょう。

実行方法に関しては、第232回 MySQL Shell for VS Codeをインストールしてみるにありますので、実際に試す場合は参照してください。

デフォルトで実行した場合の結果
デフォルトで実行した場合の結果

このように取得できました。が、results以下の部分を見てもらうと1000件となってます。

デフォルトで実行した場合の結果の取得件数
デフォルトで実行した場合の結果の取得件数

北海道の郵便番号は1000件しかない可能性もあるので、試してみましょう。

SELECT COUNT(*) FROM zipcode WHERE prefecture = '北海道';を入力して実行してみます。

COUNTの結果
COUNTの結果

結果を確認すると8201件あります。残りの7000件近くはどこへ行ってしまったのだろう、と思う方もいるかもしれません。実はMySQL Shell for VS Codeではデフォルトでは1000件までのlimitを付けてくれます。これは非常に大きなテーブルに対してlimitを付けそびれた時などにありがたい機能です。

でも次の取得をしたい場合どうしたらよいいいのかといえば、resultの画面の下の方に「Pages:」というラベルがあります。そこにある左右の矢印で移動することができます。

「Pages:」ラベル
「Pages:」ラベル

一気に結果を取得したい場合

LIMIT句で上書きをする

件数が1000件超えるのもわかってるけど、一括で取得したいこともあると思います。その場合は方法が2つあります。まずそのクエリだけで設定したい場合は、LIMIT句をつけましょう。LIMIT句を指定した場合はその件数で取得してくれます。

たとえば、先ほどのクエリにLIMIT 5000を追加して実行してみましょう。結果を見ると5000件取得できていることがわかります。

limit 5000を指定した場合
limit 5000を指定した場合

クエリごとにLIMIT句を指定すれば、特定のクエリだけ一定の件数で取得ができるようになりました。

プラグインの設定を変更する

では、サーバもPCもスペックに余裕があってもっと大きな数を指定したい場合はどうしたらよいでしょうか? その場合はMySQL Shell for VS Codeの設定を変更しましょう。設定はVS Codeの左側のExtensionをクリックします。

Extenstionアイコン
Extenstionアイコン

次にMySQL Shell for VS Codeの歯車アイコンを選択します。

歯車アイコン
歯車アイコン

そうすると設定画面が開きます。

設定画面
設定画面

今回の自動的にLimitを付ける機能に関しては、⁠Msg › Sql: Limit Row Count」という設定に指定した値で決まっています。

今回の設定箇所
設定箇所

デフォルトは先ほど触ってわかった通り1000件になっていて、これを操作することで任意の件数取得することができます。

また、無制限に取得したい場合は、0を入力することでクエリ通りに取得することができます。

0を指定してクエリどおり無制限に取得した場合
0を指定した場合

ただ件数が増えると不安定になるため、やはり1000件程度に表示をとどめておいた方が良いかもしれません。

まとめ

今回はMySQL Shell for VS Codeの結果取得件数のデフォルトと、その変更方法に関して解説をしていきました。今後もMySQL Shell for VS Codeの基本的な機能を紹介していきます。正式リリースとなったMySQL Shell for VS Codeを使用してみてはいかがでしょうか。

おすすめ記事

記事・ニュース一覧