【Dr.Sum VTB】Oracleから直接データ取得、Dr.Sumへインポートする（ODBC）

#目標
Dr.Sum VTB方式でOracleから直接データ取得、Dr.Sumへインポートする。
そのインポートを毎日定刻にバッチ実行したい。

#経緯
これまでCSVをDr.Suｍにインポートする方式しかやったことなかったです。
DBから大量データを引っこ抜く時に負荷かかったDB側で問題起きる可能性、が理由で避けてました。
でも今回、CSV作成の時間を節約するため、DB直接つなぎ→Dr.Sumにインポートをテストする許可がお客さまからもらえたので、チャレンジ。

#手順（前半:Oracleがらみの準備）
###(1)Oracle Clientインストール
・Dr.SumサーバにOracle Clientインストール
　（32ビットと64ビットがありますので環境に合わせて。以後64ビット前提で説明）

###(2)Oracle Net Configuration Assistant設定
・Oracle Net Configuration Assistantを起動
　注）ここらへん、最近のOracleがどうなってるか不明。古い12gで説明します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/c3b2e15c-6b62-3717-1248-039d25b5e8df.png)
・ローカル・ネット・サービス起動を選択、次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/51dc411e-5a86-0fc1-8363-7577c5bf0615.png)
・追加を選び、次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/7ecba0f0-9629-3fc7-8e47-5f2ccc0cca4a.png)
・サービス名を入力、不明な場合は管理者に問合せる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/40eaa4a2-a44a-1f43-6b1e-3a573ab9850c.png)
・TCPを選択し、次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/0474a00c-8ca4-b6aa-e4d8-830ad6c887a5.png)
・つなぐDBのホスト名とポートを入力、次へ（不明な場合は管理者に）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/998dc7e5-31a0-62ff-a09c-d54a50559359.png)
・テストを実行→高確率でエラーになる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/41bdeca6-dd15-bacd-aa8e-41915f230412.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/4b07aa3e-fd6d-5645-505f-f4a7c925b1f4.png)
・ログインの変更ボタンをクリック、DBのユーザとパスワードを入れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/74f20882-7f9f-f3de-60d3-76ad886728e7.png)
・ネットサービス名を入力し、完了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/73cdc1ae-ba3e-2532-9af6-fd30fd29ab34.png)

###(3)ODBC設定
####ODBCとは「Open DataBase Connectivity」
DBとその他の何かをつなぐための設定、と捉えればOKかな。

####（追記）補足
[Dr.Sum VTBのデータソース、ODBCとOCI8を検証してみた](https://qiita.com/ratsbane666/items/e0f5ce2a10fc2785e1a2)

・Windowsの管理ツールからODBCデータソース（64ビット）を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/fcb25eb6-7613-6b9e-10ea-1bf0ff925c46.png)
・システムDSNタブで、追加ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/7ebfd7f2-1bf7-716f-66a8-a55eeea7b1bf.png)
・Oracleのドライバーを選んで、完了ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/873bd99b-dd75-ecd8-5374-dbe5f36cde5c.png)
・構成を入力する（TNSサービス名、ユーザ名はこの下で説明）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/7d686081-1bc0-06aa-18c4-8508d114f469.png)
　★TNSサービス名：前述のここ↓で設定した値。ユーザID：データベースのユーザID。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/73cdc1ae-ba3e-2532-9af6-fd30fd29ab34.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/76cf419f-a95e-6b6d-9e85-6b5cedd25e54.png)

#手順（後半:VTB定義～インポート）
###(4)VTB 定義作成
####VTBとは
データをインポートするときにどういう風にするかを（条件とか、出力レイアウトとか）決めて、「仮想テーブル」として保存するよ。一度定義すれば何度でも使える。

・VTB Creator起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/79b38f6f-9e4a-37cf-ed1c-9d88bfd23407.png)
・データソースを作りますよ、作成ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/9ac12d10-d0dc-dcde-8eb5-896a492ef87c.png)
・ODBCの設定を使います、日付フォーマットをDBと合わせて、テスト実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/46e4c536-90b9-8c41-1eda-921a2b7cd418.png)
・テーブル選択が開きます、読みたいテーブルを指定し、追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/7c73383a-b04a-e6ab-c440-097aad27d213.png)
・テーブル情報が読み込まれ、こんな感じになる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/f39764ce-489f-c1ca-4705-c939dba6349b.png)
・項目を、こんな感じで全部選んで・・・（続く）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/c6339c2d-e9c5-ac1a-c0ce-c95833ef1020.png)
・（続き）下の一覧にドラッグ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/63f73a31-632a-2e63-53cb-75a0322c0661.png)
・名前をつけて保存
※ここで開くフォルダはDr.Sum Enterprise Managerの設定で指定したフォルダ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/83783455-e3f3-17a5-ef5e-d853ae3b884a.png)
※Dr.Sum Enterprise Managerの設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/80af726f-16ee-6a55-1860-be6fe04c80f3.png)

#もうちょっとだよ・・・
###(5)インポート実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/feb7c230-373e-2b49-7fb2-71366cede5cc.png)
・さきほど作ったVTB定義を仮想テーブルから選び、すでにDr.Sum内にテーブルを作っていればそのテーブルを、テーブルをこのタイミングで新規作成するならこのまま、実行する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278265/9ae61e78-1096-93fb-e400-edc26745c1a5.png)

補足：インポート時のエラー
[Dr.Sumエラー解決までの近道 - データインポート時のエンコード、制御コード](http://navi.wingarc.com/drsum/drsum-1.html)

###(6)バッチで動かす
長くなってしまったので、別で書きました。
[Dr.Sum VTBでのDr.Sumインポートを日時指定＆自動で動かす（バッチ）](https://qiita.com/ratsbane666/items/90c0aa5942187f79a52b)

#つぶやき
情シスだったら普通にやる作業だと思いますが、あらためて書き起こすと長い


#ウイングアークのユーザコミュニティ「nest」
私も参加しています。多くの有益な情報があり、交流があります。
世の中が変わり、社外活動の重要性がより増していると考えております。
社外で自分の価値を計れるものさしを持とう。

https://www.wingarc.com/wug-nest/

以上