LoginSignup
1
0

More than 1 year has passed since last update.

UIpathでデータバックアップ対応した件について

Last updated at Posted at 2021-05-31

はじめに

Uipathで社内のBCP(Business Continuity Plan)対応によって日時でデータバックアップを行う事になったのでメモとして記します。
主要システムが止まった時のためにデータのバックアップを行うものになります。
ちなみにUipathは今回始めて触りました。

想定読者

UipathでOracleDBやDB2に接続してクエリ発行する方(マニアック)
同じようなBCP対応をやることになった方(マニアック)

実装

内容としては下記になります。
主に使った機能を紹介していきます。

1.対象DBに接続
2.クエリを実行
3.ローカルに保存
4.Zip化(パスワード生成処理は省きます)
5.予め用意していたファイルサーバー上の各フォルダに格納

1.対象DBに接続

今回接続したDBは、DB2とOracleDBです。
多分ここが一番苦戦したと思います...

使ったものはこちらのUiPath.Database.Activities
https://docs.uipath.com/releasenotes/docs/uipath-database-activities

OracleDBはこちらのインストーラをダウンロードしました。
https://www.oracle.com/database/technologies/instant-client/downloads.html

Use user or systemdata source name

こちらに事前に作成したdata sourceが表示されるため選択
image.png

この後のクエリに接続情報を利用するため変数にOutputパラメータはセットしておきます。
image.png

OracleDBのデータソースを作成する際はこちらのtnsを参照する必要があります。

oracleインストールのときのtnsnames.oraってなんだよ
WindowsでOracleDBにOracle Instant ClientでODBC接続する

NLS_LANG に JAPANESE_JAPAN.JA16EUC を設定

特にこちらを未設定だと後のクエリの文字列が化けます・・・

2.クエリを実行

クエリの実行系に関してはこちらを参考にしてください。
【UiPath】SQLServerからデータを抽出して、CSVファイルに出力してみる

今回のクエリではwhere句にバインド変数を利用します。
そのまま書いてしまうとエスケープされてしまうので下記のように対応しました。

WHERE Hoge BETWEEN "+バインド変数A+" And "+バインド変数B+" Order By

WHERE Hoge IN("+バインド変数A+","+バインド変数B+") ORDER BY

あとはASでダブルクォートの文字列もエスケープされてしまうのでこんな感じに書くとうまくいきます。

AS ""ホゲホゲ""

3.ローカルにCSV保存

実行したクエリのデータテーブルの内容をCSVに出力します。
各支店分のCSVを出力するので、出力したデータテーブルに条件を付け加え支店毎に分割してCSV出力しました。

DataTable操作

CSVファイルの書き込み

格納先は起動ロボットに依存してしまうため特殊フォルダのパスを取得します。
デスクトップやマイドキュメントなど特殊なフォルダパスを取得する

4.ZIP化

最初はこちらでzipしておりましたが、7zipに変更することになりました。
ちなみにこちらのzipのフォルダ指定は配列指定でした・・・
https://marketplace.uipath.com/ja/listings/zip-unzip-activities

結局この形でzipすることになりました。
最初は「プロセスを開始」で引数にコマンドをいれていたのですが、デプロイ後に実行してみるとロボットの処理スピードの関係でうまくいかなかったためこうなりました。
わざわざ「待機」を挟んでいるのもこれが理由です。

黒くなっている箇所は7zipのコマンドとパスです。
WS000097.JPG

5.予め用意していたファイルサーバー上の各フォルダに格納

ローカルのzipファイルをファイルサーバ上の各フォルダに格納します。
各フォルダに格納する際は、ローカルのzipファイル名とファイルサーバ上のフォルダ名で突合ループさせてそれぞれ格納。
https://docs.uipath.com/activities/lang-ja/docs/move-file

.Netを使ってももちろんできます。
【UiPath】フォルダの移動をするアクティビティがない? コードの呼び出しアクティビティで対応してみた。

最後に

Uipathを初めて触ってみたので何が正しいのかわからないですが、DB2やOracleDBについての記事が少なかったのできつかったです。笑
でもそれ以外は先人の知恵がたくさんあり非常に助かりました..

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0