MySQL for Excelが便利そうかなぁと思ったので使ってみました。
インストール環境
今回インストールする環境です。
- OS:Windows7
- Excel 2013
- MySQLサーバーもクライアントもインストールされていないので一緒にインストール
インストールとセットアップ
まずこちらのページより、MySQLのインストールパッケージをダウンロードします。
今回はWEBインストーラーでじゃない、234.7Mのものをダウンロードしました。
「Download」ボタンをクリックするとログインするかどうか聞かれます。「No thanks,..」をクリックすればそのままダウンロードできます。
ダウンロードが完了したらmsiファイルをダブルクリックしてインストーラーを起動します。
「Install MySQL Products」をクリック
「I accept the license terms」にチェックを入れて「Next」ボタンをクリック
次にアップデートがないかチェックします。
インターネットに接続されていないなどの特別な事情があれば、「Skip check for updates」にチェックいれてこのプロセスをスキップします。
チェックが完了すると以下の様になります。
そのまま「Next」ボタンをクリック
次にインストールする内容とインストールするフォルダの設定を行います。
今回はMySQLサーバーも同時にインストールするため、そのまま「Next」をクリックします。
既に別のMySQLがインストールされて個別にインストールする場合はこで設定が可能(なはず)です。
インストールするパッケージに必要な条件が表示されます
「MySQL Workbench」には「Microsoft Visual C++ 2010 32-bit runtime」が、「MySQL for Excel」には「Visual Studio Toolsfor Office 2010 Runtime」がそれぞれ足りていないことがわかります。「Execute」をクリックするとそれぞれのインストールが開始されます。
「Microsoft Visual C++ 2010 32-bit runtime」のインストールが開始されます。「同意する」にチェックを入れて「インストール」ボタンをクリックしてください。
インストールが完了したら、「完了」ボタンをクリック
次に「Visual Studio Toolsfor Office 2010 Runtime」のインストールが開始されます。「次へ」ボタンをクリックしてください。
「同意する」にチェックを入れて「インストール」ボタンをクリック
インストールが完了したら、「完了」ボタンをクリック
環境によっては必要な条件も変わってくるかと思いますので、場合に応じて必要な物をインストールしてください。
条件が揃うと以下の様になりますので、「Next」ボタンをクリックします。
インストールされるMySQL製品の一覧が表示されます。そのまま「Execute」ボタンをクリック。
インストールが完了すると以下の様に表示されます。
今回はConnecter/ODBCのダウンロードに失敗してしまいました。これは後からでもインストール可能なので、そのまま「Next」ボタンをクリックします。
インストール後のセットアップを行います。「Next」ボタンをクリック。
そのまま「Next」ボタンをクリックして次へ。
rootのパスワードを入力して「Next」ボタンをクリックしてください。
ここも特に理由がなければそのまま「Next」ボタンをクリックして次へ進みます。
そのまま次へ
すべての設定が完了すると以下の用になります。「Next」ボタンをクリックして次へ進みます。
以上でインストールは完了になります。「Finish」ボタンをクリックししてインストーラーを終了してください。
MySQL for Excelの使い方
ExcelからMySQLサーバーへの接続
MySQL for Excelを使用するにはExcelを起動し、「データ」タブから「MySQL for Excel」をクリックしてください。
そして、MySQLサーバーへの接続を作成するために「New Connection」をクリックします。
MySQLサーバーの情報を入力します。
Connection Nameは任意のものを入力してください。
HostNameにはそのまま「localhost」を指定し、user/passwordはインストール時に設定したものを入力てください。MySQLのインストール後にMySQLサーバーのサービスは起動しているはずなので、そのまま接続可能なはずです。
「Test Connection」ボタンをクリックして、接続のテストを行うことができます。問題がなければ以下の様に表示されます。
「OK」ボタンをクリックすると、接続の設定が追加されます。
接続の設定をダブルクリックすると、MySQLサーバーへ接続されます。接続が完了するとデータベース(スキーマ)の一覧が表示されます。
データベース(スキーマ)追加
データベース(スキーマ)を追加するには「Create New Shema」をクリックします。
データベース(スキーマ)名を入力して「OK」ボタンをクリックしてください。
追加したデータベース(スキーマ)名が表示されていれば完了です。
データからテーブルを作成
テーブルを追加したいデータベース(スキーマ)をダブルクリックします。
Excelのシートにテーブルのデータを想定したデータを入力し、「Export Excel Data to New Table」をクリックします。
テーブルの情報を入力し「Export Data」ボタンをクリックするとテーブルが作成できます。
「Export Data」の▼ボタンをクリックしてデータも同時に登録する(Export Data)か、テーブルのみ作成する(Create Table)か選択出来ます。
登録が成功すれば以下の様に表示されます。
「Tables」の左の▶をクリックすると先ほど登録したテーブルが表示されます。
テーブルデータ取り込み
テーブルのデータをExcelのシートに取り込むことができます。
データを取り込むには「Import MySQL Data」をクリックします。
テーブルのデータが表示されます。問題がなければそのまま「Import」ボタンをクリック
テーブルのデータがExcelのシートにインポートされました。
テーブルデータの操作
Excelのシートを使って、MySQLのテーブルのデータを編集することもできます。
Excelからデータを編集するには、編集する対象のテーブルを選択して「Edit MySQL Data」をクリックします。
インポートの時と同様にテーブルのデータが表示されます。こちらも内容に問題がなければ「Import」ボタンをクリックしてデータを一旦取り込みます。
取り込み後は以下の様になります。
データを変更したセルは水色で表示されます。この時点ではMySQLサーバーのテーブルにはデータは反映されていません。
「Commit Changes」ボタンをクリックするとMySQLサーバーのテーブルにデータが反映されます。反映されたデータは緑色になります。
黄色のセルにデータを入力することでデータをINSERTできます。
通常のExcelの操作の列の削除で行をDELETEすることができます。
列の追加・削除はできません。
データの変更に失敗した場合は以下の様に表示されます。
このような場合は「Show Details」ボタンをクリックし、エラーの内容を確認することができます。
コミット前のデータは「Revert Data」で元に戻すとができます。注1
シートのデータからテーブルにデータを挿入
既存のExcelのデータをテーブルに挿入することができます。
データをテーブルに挿入するには「Append Excel Data to Table」をクリックします。
シートのデータとテーブルのデータのマッピングを行います。ドラッグアンドドロップで設定できます。
設定したマッピング情報は「Store Mapping」で保存し使いまわすことができます。
また、「First Row Contains Column Name」にチェックを入れることで一行目のデータをカラム名として扱うことができます。
「Append」ボタンでデータを取り込みます。
正常に取り込めた場合は以下の様に表示されます。
エラーがあった場合は以下の様に表示されます。
こちらの場合も「Show Details」ボタンをクリックし、エラーの内容を確認することができます。
ビュー・プロシージャについて
一応ビュー・プロシージャの機能もついていますが、MySQL for Excel上でCREATEできなかったのと、下記の様に直接作成して試してみたのですが、データの参照のみ可能だったので割愛します。
mysql> CREATE VIEW test_view AS SELECT * FROM test; Query OK, 0 rows affected (0.05 sec) mysql> CREATE PROCEDURE test() SELECT 1; Query OK, 0 rows affected (0.01 sec)
感想
出来ることは少ないですが、既存のExcel(もしくはCSV)のデータからテーブルにインポートする際は便利かも。データの移行作業とかうまい具合な状況が揃えば是非使ってみたいところ。
シートから直接テーブルのデータを操作出来るのは一見「おおっ!」って思うのですが、多分使わないだろうなぁ。開発中に使用する分には便利かも。
運用に乗っかってデータが大きくなると表から探すのとか無理ゲー。
SQLの実行結果をシートに落としてレポート的な利用方法ができるかなぁって、SQLは直接実行できない模様。この辺はストアド・プロシージャとかビューでなんとか出来そうかな。
注釈
- 「Refresh Data From DB」はMySQLサーバー上のデータでExcelのデータを更新します。「Revert Changed Data」はExcel上で変更されたデータが元に戻るだけで、MySQLサーバーのデータは反映されません。