vimのdbext.vimでSQLデータベースを操作する方法

提供: neovim/vim入門
移動: 案内検索
スポンサーリンク

MySQLやOracleなどのデータベースを扱うときに、それぞれのSQLクライアントを利用してデータベースを参照・操作を行います。それぞれのクライアントをもっとエディタのように編集・入力ができたら、と思われる方も多いと思います。vim/neovimやEmacsは、エディタの上からリレーショナルデータベースを操作できます。ここでは、プラグインのdbext.vimを利用した例を紹介します。

読み方

dbext.vim
でぃーびー いーえっくすてぃー ぶいあいえむ

概要

ここでは、データベースの操作を vim/neovim を行うための方法を紹介します。

プラグインの dbext.vim を使用した例になります。 dbext.vim は、 MySQL や Oracle, SQLite などをはじめ、たくさんのデータベースをサポートしています。

エディタからデータベースを操作することにより、エディタの編集能力を借りることができるのが、最大のメリットといえるでしょう。

ここでは、MySQL (実際にはMariaDB) を例として扱います。

データベースのクライアントの課題

データベースの操作には、データベースのクライアントを通じて行います。もしくは、プログラミング言語ごとに提供されるドライバを通して、データベースと通信します。

MySQL/MariaDB なら mysqlコマンド, Oracleなら sqlplus など、専用のクライアントコマンドが提供されています。

専用コマンドの問題点は、SQL入力プロンプトにエディタのような柔軟な編集能力がないことではないでしょうか。

dbext.vim が扱えるデータベース

idbext.vim がサポートしているデータベースは、以下の通りです。

  • ODBC / Perl DBI (Any database with a Perl DBI driver)
  • MySQL
  • Oracle
  • Oracle Rdb (VMS)
  • SAP HANA
  • SAP Sybase SQL Anywhere (SA/ASA)
  • SAP Sybase IQ (ASA)
  • SAP Sybase Adaptive Server Enterprise (ASE)
  • SAP Sybase UltraLite (UL)
  • Microsoft SQL Server
  • IBM DB2
  • Interbase
  • SQLite
  • PostgreSQL
  • Ingres
  • Firebird
  • Crate.IO

インストール

dein.vim

dein の場合は、以下の設定を .vimrc に書き、 :call dein#install() を実行してください。

call dein#add('vim-scripts/dbext.vim')

NeoBundle

NeoBundle の場合は、以下の設定を .vimrc に書き、 :NeoBundleInstall を実行してください。

NeoBundle 'vim-scripts/dbext.vim'

設定

以下は、MySQL サーバに接続する場合の例です。

let g:dbext_default_profile_mySQL = 'type=MYSQL:srvname=localhost:user=root:passwd=:dbname=test'

上記の場合、プロファイル名は、 mySQL となります。

この設定は、複数書くことができます。 その場合は、プロファイル名を重複しないように書きます。

データベースプロファイルの切り替え

プロファイルを切り替えることで、データベースの接続を切り替えます。

選択ウィザードを表示する場合は、以下の通りです。

<Leader>sbp

上記のコマンドを実行すると、以下のような選択画面が表示されます。数字で、プロファイルを指定して、エンターを押します。

dbext:Connection parameters have been defaulteddbext: Executing SQL at 18:57
0. None
1. mySQL
[Optional] Enter profile #: 0

もしくは、以下のコマンドで直接変更できます。

:DBSetOption profile=test

テーブル一覧を表示する

以下のコマンドで、テーブル一覧を表示できます。

<Leader>slt

テーブルのプレフィックスを入力するように求められます。

Enter table prefix:

特に指定するものがなければ、エンターで構いません。 以下は、テーブルが1つしかありませんので、1つだけ表示されています。

Connection: T(MYSQL)  S(localhost)  D(test)  U(root)   at 18:59
+--------------------+
| Tables_in_test (%) |
+--------------------+
| user               |
+--------------------+
~
 Result                                              16%    1:1
Enter table prefix: dbext: Executing SQL at 18:59

テーブルの内容を表示

カーソルをテーブル名に置き、以下のコマンドを実行すると、テーブルの内容が表示されます。

<Leader>st

表示された例は、以下の通りです。

Connection: T(MYSQL)  S(localhost)  D(test)  U(root)   at 19:01
+------+------+
| id   | name |
+------+------+
|    1 | a    |
|    2 | b    |
+------+------+

任意のSQLを実行する

DBExecSQLUnderCursor を実行すると、カーソル上の SQL を実行できます。

vim に入力された SQL の文の行のカーソルを置き、以下のショートカットキーを実行すると、SQL が実行できます。

<Leader>se

たとえば、以下のSQL文を入力し、カーソルを同じ行に置きます。

SELECT * FROM USER;

ここで、以下のキーを入力します。

<Leader>se

そうすると、画面分割され、実行結果が表示されます。

Connection: T(MYSQL)  S(localhost)  D(test)  U(root)   at 19:06
+------+------+
| id   | name |
+------+------+
|    1 | a    |
|    2 | b    |
+------+------+

以下のようにすれば、

SELECT * FROM USER WHERE name='a';

実行すると

Connection: T(MYSQL)  S(localhost)  D(test)  U(root)   at 19:05
+------+------+
| id   | name |
+------+------+
|    1 | a    |
+------+------+

となります。

まとめ

  • dbext.vim からデータベースが操作できる
  • vimのバッファ内のSQL文を簡単に実行できる
  • 実行結果は、vim バッファ内に表示されるので、実行結果の編集も簡単

関連項目



スポンサーリンク