前回CSVの加工の方法の1つとして紹介した「H2 Database」を使う方法です。
前提として、「Execute Query」と「H2 Database」のモジュールはダウンロードしていることとします。
次の内容です。
- 「Execute Query」を起動する。
- JDBCドライバを設定する。
- 接続先を登録する。
- 実際に使ってみる。
1. 「Execute Query」を起動する。
ダウンロードしたモジュールに、exeファイルが用意されていて、「eq.exe」をダブルクリックすると起動します。この場合、32bitのjavaコマンドを探しにいくので、64bitで動かしたい場合は、コマンドで起動します。
"D:¥x64Java¥bin¥javaw.exe" -Xms256m -Xmx2G -jar eq.jar
「-server」オプションなど入れると気持ち早くなるかもしれません。
2. JDBCドライバを設定する。
起動したらJDBCドライバを登録します。「Drivers > New JDBC Driver」をクリック
Database Driverで、次のように設定 PathにはH2 Databaseのjarを指定します。
3. 接続先を登録する。
「Connections> New Connection」をクリック
「Database Connection」で次の登録をしてConnectボタンをクリックするとスタンドアロンで起動します。(urlをjdbc:h2:mem:. としたので、メモリモードです)
4. 実際に使ってみる。
まず「H2 Database」の良さは、テーブル定義で桁が不要です。
create table sample( textfield varchar, decimalfield decimal)
こんなテーブル定義がOKです。桁を指定しないと最大サイズで定義されます。
そして、前回紹介した csvread と csvwrite でCSVを扱っていきます。
例として、Salesforceのグループメンバー(GroupMember)のデータを加工します。結局Salesforceを例にするのが簡単でした。。。
グループメンバー(GroupMember)はグループ:GroupId(公開グループ、キュー)に、ユーザかグループ:UserOrGroupId(公開グループ、ロール、ユーザ)が割り当てられている情報になります。
SalesforceのSOQLでは、ユーザかグループ:UserOrGroupIdの情報は参照先名がないので、SOQLでは辿ることができません。
こんな時はCSVを使って加工をします。
4-1.必要な情報のCSVを取得する。グループメンバー(GroupMember)、グループ(Group)、ユーザ(User)のCSVを取得します。それぞれ、D:SFGroupMember.csv、D:
SFGroup.csv、D:SFUser.csv として保存します。
4-2.Execute Queryでテーブルにロードします。
create table SFGroupMember as select * from csvread('D:SFGroupMember.csv');
create table SFGroup as select * from csvread('D:SFGroup.csv');
create table SFUser as select * from csvread('D:SFUser.csv');
4-3.SQLを実行し欲しい結果にする。
select * from
SFGroupMember
inner join SFGroup parent
on SFGroupMember.GroupID = parent.ID
left join SFGroup child
on SFGroupMember.USERORGROUPID = child.ID
left join SFUser
on SFGroupMember.USERORGROUPID = SFUser.ID
上記のSQLで、例えば、公開グループの中に公開グループがある場合や、公開グループの中にユーザがある場合など情報を取得することができます。(nullかどうかで出し分けするときれいに整形できると思います)