本投稿では前回Oracle Instant Clientの設定をおこなったので、
Excel、Accessでの基本的なOracle DatabaseへのODBC接続方法について紹介します。
今回使用するExcel,Accessは2016です。
Access2016でOracle DatabaseへODBC接続する
-[外部データ]>[新しいデータソース]>[他のソースから]>[ODBC データベース]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-108.png)
-[リンク テーブルを作成してソース データにリンクする]を選択して、[OK]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-109.png)
-[新規作成]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-110.png)
-[Oracle in instantclient_12_2]を選択し、[次へ]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-111.png)
-[参照]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-113.png)
-新規で任意のDSN名を入力し、[保存]をクリックする。
本投稿では以下の通り設定。
保存する場所:C:\instantclient_12_2
ファイル名:odbc_pdb1
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-112.png)
-[次へ]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-114.png)
-[完了]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-115.png)
-「Oracle ODBC Driver Connect」にて以下接続情報を入力し、[OK]をクリックする。
Service Name:PDB1
User Name:soe
Password:soe
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-116.png)
-[OK]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-117.png)
-再度「Oracle ODBC Driver Connect」 が表示されるため[Password]を入力し、[OK]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-118.png)
-「テーブルのリンク」画面で任意のテーブルを選択し、[OK]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-120.png)
-Wクリックするとインポートしたテーブル情報が表示される。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-121.png)
Access:「リンク テーブルを作成してソース データにリンクする」の注意点
リンクテーブルを作成し、テーブル情報を表示する方法は直接テーブル内のデータを更新することができるので注意が必要です。
例)テーブルORDERSのORDER_ID=274495のDELIVERY_TYPEを変更する。
※現在の状態
SQL> select order_id,delivery_type from orders where order_id=274495;
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-143.png)
※AccessにてORDER_ID=274495のDELIVERY_TYPEをExpressに変更
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-144.png)
※SQLでORDER_ID= 274495のDELIVERY_TYPEを確認
SQL> select order_id,delivery_type from orders where order_id=274495;
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-145.png)
実テーブルを更新する必要がない/AccessにOracle Databaseのテーブルをインポートしたい場合は[現在のデータベースの新しいテーブルにソース データをインポートする]選択してください。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-146.png)
リンクテーブルを作成済みであれば対象テーブルを右クリックし、[ローカル テーブルに変換]をクリックすることでリンクテーブルからAccess上に存在するテーブルへと変換することができます。
![ローカルテーブルに変換](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-147.png)
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-149.png)
Excel2016でOracle DatabaseへODBC接続する
-[データ]>[外部データの取り込み]>[その他のデータ ソース]>[Microsoft Queryから]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-128.png)
-「データソースの選択」に前回作成した[odbc-oracle12c]を選択し、[OK]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-129.png)
-Oracle Databaseの[Password]を入力し、[接続]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-130.png)
-任意のテーブルを選択した状態で[>]をクリックし、[次へ]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-131.png)
-[次へ]をクリックする。(データの抽出条件を設定したい場合は本画面で設定する。)
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-132.png)
-[次へ]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-133.png)
-[Microsoft Excel にデータを返す]を選択し、[完了]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-134.png)
-しばらくすると抽出したデータが表示されます。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-135.png)
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-137.png)
Excel:テーブルデータ表示の制限
-ただし、データ件数が多い(1048576行を超過する)と以下メッセージが表示されます。
このクエリによって返されたデータはワークシートに入りきりません。
・入りきるだけのデータを表示して続ける場合は、[OK]をクリックします。
・クエリを取り消す場合は、[キャンセル]をクリックします。返されるデータを減らすには、データソースへの接続のクエリを変更してください。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-136.png)
ちなみに「Microsoft Query」ではどうなるか、、、
-[Microsoft Query でデータの表示またはクエリの編集を行う]を選択し[完了]をクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-138.png)
-赤枠の最終行を表示するアイコンをクリックする。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-142.png)
-以下エラーが発生する。
全レコードを表示できません。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-139.png)
65536行までが限界のようです。
![](https://www.teamxeppet.com/memorandum/wp-content/uploads/2020/01/image-141.png)
今回はAccess、ExcelでのODBC接続手順を紹介しました。
本番環境のテーブルデータを参照して何かしたいとしてもOracle Databaseにログインしてテーブルデータを閲覧したり、編集するのは危険が伴います。
そんな時にデータをAccess、Excelに抽出して作業をすることで危険を回避することができます。
重要なデータは安全な方法で扱っていきたいですね。
コメント