目標
Dr.Sum VTBを使ったDr.Sumインポートを日時指定&自動で動かす(バッチ)
※「担当者が毎日手動でDr.Sum EnterpriseManagerから実行する」でよいなら特に必要ない
※ただし↑この場合、担当者が休みの時は誰がどうする、等の検討は必要だよね
関連記事こちら
Dr.Sum VTBでOracleから直接データ取得、Dr.Sumへインポートする
心意気
私は文系(文学部国文学科)出身でSEになった人間です。
新人研修では講師が何の話をしてるのかわからず、10進数を表す「デシマル」を聞いたとき「それどんな漢字で書くんですか」と聞いて講師を凍らせました(私の脳内では「出四丸かな?」)。
「変数の型」「関数」「配列」「アドレスのアドレス」分からなすぎて何度も心が死にました。研修の開発言語はCでした。理系出身の同期の話についていくのに何年かかかった感あります。てか、いまでも理解できてない事が沢山あります!
そんな私ですので、生まれて初めて「コマンド」「バッチ」に触れた人の戸惑いが分かります、私もそうでした。そのような人にもわかるよう書く・・・書きたい・・
必要なもの
(1)Dr.Sumが用意したコマンド「dwtab_import」への認識
→コマンドプロンプトで、ルールに従った書き方で入力=インポート出来る
(2)バッチファイル
→(1)を自動で動かすために必要、自分でファイル作成
(3)タスクスケジューラ
→Windows付属のアプリ、自分でタスク作成必要
手順
(1)Dr.Sumが用意したコマンド「dwtab_import」への認識
コマンドの使用法を理解しましょう。
コマンド「dwtab_import」
2-20 dwtab_import(テーブルにデータをインポートする)
https://cs.wingarc.com/manual/drsum/4.2/ja/ea42/index.html#60784937.html
この手のものに慣れ親しんだ方ならマニュアルでOKと思いますが、そうでない方のために以下書きます。
疑問:コマンド「dwtab_import」??
→Dr.Sumが用意した呪文と捉えましょう。
この呪文を決まった場所で型どおりにとなえるとテーブルにインポートできる。
呪文は文字でコマンドプロンプトに入力する。
Dr.Sum EnterpriseManagerを使ってインポートするのと結果は同じだけど。
コマンドを使うことで、コンピュータにやらせることが出来る(=自動化)。
疑問:決まった場所で??
決まった場所=Dr.Sumインストールしたフォルダ
例)E:\DrSum51\AdminTools\cmd\JPN
※始めはコマンドの前にこの「決まった場所」をひっつけて、以降の型を整えたほうがよい。
E:\DrSum51\AdminTools\cmd\JPN\dwtab_import .........
疑問:型どおりに??
↓この実際のコマンドで解説します。
E:\DrSum51\AdminTools\cmd\JPN\dwtab_import "localhost" 6001 "Administrator" "password" "共通" "共通カレンダー "VTB_ROOT" "V_共通カレンダー" "" "" 0 1 0
★マニュアル
コマンド「dwtab_import」
2-20 dwtab_import(テーブルにデータをインポートする)
https://cs.wingarc.com/manual/drsum/4.2/ja/ea42/index.html#60784937.html
(2)バッチファイル
(1)で解説したコマンドの先頭に「call 」を付け、テキストファイルに貼り付ける。
こんな感じ。
call E:\DrSum51\AdminTools\cmd\JPN\dwtab_import "localhost" 6001 "Administrator" "password" "共通" "共通カレンダー "VTB_ROOT" "V_共通カレンダー" "" "" 0 1 0
できたら、~.batという名前で保存。インポート.batとか。
このファイルをダブルクリックするとインポート実行しますので気をつけて!!
(3)タスクスケジューラ
インポートが決まった日時に実行されるよう設定します。
Windowsの管理ツール→タスクスケジューラで起動、タスクの作成をクリック。
名前をつける。セキュリティオプションは私はたいていこのようにしておく。
タスクができるとこんな感じ
作業フォルダを指定するようにしましょう。
(4)バッチ実行後の確認
管理テーブルを確認し、最終更新日時を確認しましょう。ここで分かります。
(またはテーブル一覧で最新の情報に更新しても良いのかなと)
select dataupdate_time from __all_tables__ where table_name = 'テーブル名' AND assortment = 'table'
出てきた日時正しいか、確認を。
※副島さん、ご指摘ありがとうございます。
すぐにぶちあたる課題
バッチが何らかの理由で失敗した時に、どう感知するか?操作のところでいかにも電子メールの送信ができそうなんだけど、実際は使えない。使えないものをなんで出しとるんかわからんわ。
→エラー発生時にお知らせメール飛ばす仕組みを作りました。ダサいやつです。どこかで紹介するかも
マニュアル
第3章 バッチ処理の例
インポート
https://cs.wingarc.com/manual/drsum/4.2/ja/ea42/index.html#60784923.html
コマンド「dwtab_import」
2-20 dwtab_import(テーブルにデータをインポートする)
https://cs.wingarc.com/manual/drsum/4.2/ja/ea42/index.html#60784937.html
ウイングアークのユーザコミュニティ「nest」
私も参加しています。多くの有益な情報があり、交流があります。
世の中が変わり、社外活動の重要性がより増していると考えております。
社外で自分の価値を計れるものさしを持とう。自社だけが世界ではない!
以上