0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Blue Prism】OLEDBをBluePrismで使うには

Posted at

はじめに

通常、エクセルで読み込んだデータはコレクションで扱うことが出来ますが、何十万行もの大容量のデータの場合、読み込みに時間がかかったりメモリのエラーが出てしまうことがあります。
コレクションを分割してデータの格納を行うことも出来ますが、OLEDBを用いれば高速で大容量のデータを扱うことが出来ます。
ExcelでもCSV形式でも読み込むことが出来、高速化を図ることが出来ます。

*筆者は34万行のエクセルデータの読み込み→検索をコレクションで約6分かけて行っていたものが約10秒になりました。

OLEDBとは

OLE DBとは、MicrosoftがCOM(Component Object Model)技術をベースとして開発した、様々なタイプのデータへ共通の手段でアクセスできるようにするためのAPIのことです。
SQLを用いて検索などの操作を行うことが出来ます。

使用方法

例として条件に該当する[貸出状態]列のデータを取得します。

アカウント情報.xlsx
image.png
上のようなファイルを作成します。

image.png
任意のフォルダに配置します。

1."C:\Program Files\Blue Prism Limited\Blue Prism Automate\VBO\BPA Object - Data - OLEDB.xml"よりリリースをインポートします。

2.図のようにアクションを配置します。
image.png
Set Connectionに接続文字列を入力し、Get Collectionに行いたいSQLの操作を入力します。

接続文字列

・Set Connectionの接続文字列:Excelの場合

Provider=Microsoft.ACE.OLEDB.12.0;Data Source="C:\temp\アカウント情報.xlsx";Extended Properties="Excel 12.0 Xml;HDR=YES;"

・Set Connectionの接続文字列:CSVの場合

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\;Extended Properties="Text;HDR=Yes;"

HDRは1行目をヘッダーとして扱うかを示します。

SQL文の指定

・Excelの場合
FROMにシート名を指定します。

SELECT 貸出対象 FROM[sheet1$] WHERE アカウント名 = 'account' AND サーバー名 = 'server1';

・CSVの場合
FROMにファイル名を指定します。
データアイテム
SQL From:アカウント一覧.csv

SELECT 貸出対象 FROM[アカウント情報.csv] WHERE アカウント名 = 'account' AND サーバー名 = 'server1';

シングルクオートで囲むことで文字列として検索することが出来ます。(囲まない場合数字として検索されます)

実行

接続文字列とSQL文を入力して実行するとResultsから検索結果を得ることが出来ます。
image.png

また、Closeを行う前にGet Collectionを繰り返し実行することが出来ます。

下記のようなエラーが出た場合、Microsoft Accessデータベースエンジンをダウンロードしてください。
https://www.microsoft.com/ja-jp/download/confirmation.aspx?id=13255

内部 : コードステージによって例外がスローされたため、コードステージを実行できませんでした。 'Microsoft.ACE.OLEDB.12.0' プロバイダーはローカルのコンピューターに登録されていません。

CSVの注意点

CSVファイルを読み込んだ場合、自動で型を判断されます。
型エラーが出てしまう場合、schema.iniファイルを作成し、型を指定する必要があります。

「schema.ini」のサンプル

[アカウント一覧.csv]
ColNameHeader=True
Format=CSVDelimited
Col1=アカウント名 Text
Col2=サーバー名 Text
Col3=貸出対象 Text

日本語が含まれている場合、文字コードをANSIなどにしてください。

サンプルテキスト

アカウント情報.csv

アカウント名,サーバー名,貸出対象
account,server1,✓
tanaka,server2,×
sasaki1,server1,✓
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?