エクセルへデータ取り込み方法(2)

前回は「real1」テーブルのデータを直接エクセルへ取り込む方法をご紹介しました。今回はテーブルデータをクエリによって加工した状態で取り込む方法をご紹介したいと思います。

まずはクエリについて簡単にご説明します。

クエリとは三省堂 大辞林によると「〔質問の意〕 データベースの検索で、指定された条件を満たす情報を取り出すために行われる処理の要求。」とのことで、SQL ServerではSQLと呼ばれるデータベース問い合わせ言語で記述した命令文のことを指します。SQL ServerはSQL Server Management Studio(略してSSMS)上でクエリによってデータベースへの問い合わせを試すことが可能です。

今回、データベースへ問い合わせるクエリについてSSMS上の画像を参考にご説明します。

まず問い合わせ条件を以下のように決めます。

  1. 1番機から3番機までの現在値データを加工して取り出す
  2. 各機械の製品名称、包装個数、稼動時間を取り出す
  3. ひとつのデータのかたまりとして取り出す

では実際にクエリを記述して、目的のデータを収集できるか確認していきます。

SSMSを起動します。

管理PC上であればWindows認証、ネットワーク上の別のPCであればSQL Server認証でデータベースへ接続します。

SSMSが開きましたら、オブジェクトエクスプローラーのデータベース → miharodb → テーブル → dbo.real1を右クリックし「上位1000行の選択」をクリックします。

テーブルを参照するクエリとデータが表示されたら、クエリを以下のように編集します。

SELECT TOP 1000 [ID],[Itemname],[Value]
FROM [miharodb].[dbo].[real1]
WHERE [ID]=3 OR [ID]=6 OR [ID]=8

実行すると以下のように「製品名称」、「包装個数」、「稼動時間」のみが結果に表示されます。

さらにクエリを以下のように追加、変更します。

SELECT ‘No.1’ [機械番号],[ID],[Itemname],[Value]
FROM [miharodb].[dbo].[real1]
WHERE [ID]=3 OR [ID]=6 OR [ID]=8
UNION ALL
SELECT ‘No.2’ [機械番号],[ID],[Itemname],[Value]
FROM [miharodb].[dbo].[real2]
WHERE [ID]=3 OR [ID]=6 OR [ID]=8
UNION ALL
SELECT ‘No.3’ [機械番号],[ID],[Itemname],[Value]
FROM [miharodb].[dbo].[real3]
WHERE [ID]=3 OR [ID]=6 OR [ID]=8

これはreal1テーブルのID=3,6,8データに「No.1」という機械番号セルを追加したデータとreal2、real3テーブルを同様に加工したデータを合体させるというクエリ記述となります。実行結果は以下のようになります。

結果が正常に確認できましたら、新規エクセルファイルを開きデータ → 外部データの取り込み → その他のデータソース → SQL Serverをクリックします。

データ接続ウィザードにてSSMSへ接続したときと同じ方法でデータベースへ接続します。

データベースはmiharodbを選択します。

最初のテーブルが選択された状態で「次へ」をクリック。

「完了」をクリックします。

次に表示される、データのインポートで「プロパティ」をクリックします。

接続のプロパティが表示されたら、「定義」タブへ切り替えます。

「定義」タブの「コマンドの種類」を”SQL”へ、コマンド文字列にSSMSで作成したクエリを貼り付けます。

「OK」をクリックします。

データのインポートへ戻ったら「OK」をクリックします。

SSMSの結果に表示されたデータと同じものがエクセルへ入力されました。

見張ろうくん統合管理ツールは、エクセルへデータを取り込んだ後もデータを更新し続けていますので、最新データへ更新したい場合はエクセルのデータ → すべて更新をクリックするだけで新しいデータへ書き換えることができます。

このように任意に抽出したデータを使い、エクセルファイルを拡張することでデータを様々に活用することができます。