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