注意:こちらの記事の情報はCData Sync の過去バージョンにもとづいています。最新のハンズオン手順については、こちらの最新記事をご参照ください。
はじめに
本資料は、CData Software Japanのハンズオン向けの資料です。本ドキュメントをもとに実機にCData Sync製品をインストールして手順に沿って操作する事で、SalesforceなどのクラウドサービスのデータをCSVファイルやMySQLといったデータベースに同期する方法、加えてCData Sync の機能を理解して頂くことを目的としています。
今回の資料は以下記事から抜粋しています。ハンズオン終了後でも確認いただけます。 ハンズオン資料
ハンズオンの事前準備
本ハンズオンではVM環境に接続して実機でご確認いただく流れとなります。事前にこちらの手順でVMに接続できることを確認ください。
www.cdatablog.jp
ハンズオンの内容
本ハンズオンでは以下の内容を行います。
- Salesforce → MySQLへのレプリケート
- Tips:差分更新
- Tips:オリジナルのクエリを実行
- Tips:APIで実行
- Tips:スケジューリングして実行
CData Sync製品のインストール
最初にCData Sync をダウンロードします。こちらからダウンロードページを表示してください。
右上にダウンロードボタンがありますのでクリックします。
今回はWinowsマシンのため、左側のWindowsマーク配下の「DOWNLOAD NOW」をクリックします。
Eメールを入力し、ダウンロードボタンをクリックします。
そうしますと、 CDataSync.exe がダウンロードフォルダに入ってきますので、ダブルクリックしてインストールを開始します。
ライセンス契約書を確認後、次に進みます。
インストール先も支障がなければデフォルトのまま進みます。
デフォルトのまま次へ進みます。
デフォルトのまま次へ進みます。
CDataSync にログインする際のパスワードを設定します。今回は「Password1」で設定します。
ここまででインストールの準備が完了です。インストールボタンをクリックしてインストールを開始します。
以下の画面が表示されますと、インストールが完了となります。チェックボックスにチェックをつけたまま完了ボタンをクリックすることで、CDataSyncが起動されます。
起動するとWindowsのステータスバーにCData Sync のアイコンがこのように表示されます。
ライセンスのアクティベーション
CData Sync にログイン後、ヘッダーの情報タブをクリックします。今回は赤枠の「評価版をアクティベート」をクリックします。
名前・Eメール、ソフトウェア使用許諾契約書にチェックを入れ、「評価版をアクティベートする」をクリックします。
アクティベートが完了すると、赤枠のようにライセンスの種類、プロダクトキーに値がセットされます。なお、評価版は30日間まで無料でご利用いただけます。
Salesforce のデータをMySQLにSync
ここでも同じように接続情報とジョブを作成する必要がありますが、Salesforceの接続情報は既に作成済みですので、MySQLの接続情報のみを作成していきます。
1.Salesforce へのコネクションを作成
ヘッダーで「接続」をクリックし、以下の画面で Salesforce のアイコンをクリックします。
Salesfroce へのコネクションの設定画面が表示されるので、名前を任意の名称(例:Salesforce)に変更して、User、Password、SecurityTokenを設定して、「接続のテスト」ボタンをクリックします。上段に「接続に成功しました。」のメッセージが出たら成功です。「変更を保存」ボタンをクリックして作成したコネクション情報を保存してください。 当ハンズオンでは以下の通り入力願います。
- 名前:Salesforce
- フォーマット設定:プロパティリスト
- User:Salesforce のアカウント
- Password:Salesforceのパスワード
- Security Token:Salesforceより発行されたセキュリティトークン
2.MySQL へのコネクションを作成
同期先タブをクリックし、MySQLを選択します。
MySQL は各仮想マシン上にインストールしてありますので、以下の接続情報を設定してください。
- 名前:MySQL
- フォーマット設定:プロパティリスト
- Server:MySQLのIPもしくはホスト名
- Port:3306
- Database:データベース名
- User:ユーザ
- Password:パスワード
入力が終わりましたら、「接続のテスト」をクリックし接続確認を行います。接続ができましたら右上の「変更を保存」をクリックし接続情報を保存します。
3.ジョブの作成
トップ画面から「ジョブを追加」をクリックし、以下の内容を設定します。MySQLを選択後、作成ボタンをクリックします。
- ジョブ名:SalesforceToMySQL
- ソース:Salesforceを選択
- 同期先:MySQLを選択
今回もSalesforce のAccount テーブルを同期することにしますので、「テーブルを追加」をクリックし、Accountテーブルを選択してください。そうしますと、ジョブが作成されます。
4.ジョブの実行
ジョブにチェックをつけ「実行」ボタンをクリックしてください。実行後、成功すれば同期したメッセージが表示されます。
5.同期したMySQLを確認
MySQL のデータベースに正しく同期されたことを確認するため、タスクバーの赤枠にあるMySQL Workbench をクリックし、MySQLのデータベースを参照します。
Local Instanse を選択後、パスワードにroot を入力しOKボタンをクリックしてください。
handson データベース内にaccount テーブルが作成され、テーブルの中にはデータが表示されているのが確認できました。
Tips:差分更新
CData Sync では差分更新を行うことができます。対応しているデータソースはここから確認できます。
以下キャプチャの赤枠部分をご参照ください。ここが★マークになっているものが差分更新に対応しているデータソースとなります。
今回使っている Salesforce も差分更新に対応しています。
Salesforce で差分更新
では、実際に Salesforce のデータを差分更新しましょう。先ほど作成した「SalesforceToMySQL」ジョブを開いてください。
今の時点ではステータスの箇所に「Records affected: 13」となっています。これが最後に実行したジョブ内容です。では、チェックボックスをオンにして、実行ボタンをクリックしてください。
「Records affected: 0」で実行結果が終了したと思います。これは最後に同期処理を行ってから、Salesforce のAccountオブジェクトで何も変更がなかったため、MySQLへの連携は0件ということでした。
この差分更新はデフォルトで行われるようになっていますが、差分更新をしたくない場合もあります。そのオンオフは以下の画面で設定することができます。
ジョブ設定の画面中段にある「Advanced」タブを選択すると表示されます。ここの「テーブルを削除」、「テーブルデータを削除」にチェックがないと差分更新を行うようになります。
では、「テーブルを削除」にチェックを入れてデータを再度同期してみましょう。チェック後は右上の変更を保存を忘れずにお願いします。先ほどは差分更新機能が有効だったため、同期件数は0件でしたが、今度は全件が同期されるはずです。ジョブ「SalesforceToMySQL」を開き、ジョブを実行してください。
Tips:オリジナルのクエリを実行
いままでは自動的に作成されたクエリで同期処理を行ってきましたが、ユーザ自身でオリジナルのクエリを設定することができます。
ジョブ設定画面の「カスタムクエリを追加」ボタンをクリックしてください。
クエリ入力画面が表示されます。ですが、もう少し簡単に入力できる画面があります。今回はそちらを使います。「閉じる」ボタンをクリックしてください。
ジョブ設定画面のクエリが書かれている赤枠あたり、もしくはクエリ右端の編集ボタンをクリックしてみてください。
以下の画面が表示されますので、赤枠の「Advanced」タブをクリックしてください。
右上にある「Add rule」ボタンをクリックすると、項目と条件式、条件を入力するエリアが表示されますので、以下の内容で入力してみてください。
- 項目:BillingCountry を選択
- 条件式:equal を選択
- 条件:USA
入力を終えると、画面下部にあるクエリ部分に自動で反映されたことがわかります。
また、自分自身でクエリを書くこともできます。左側の「カスタムクエリを記述」のチェックボックスにチェックを入れますと、グレーで非活性となっていたクエリ部分が活性となり入力可能となります。
では、並び順を制御するために「order by Id」と加えてみます。入力後、右下のOKボタンをクリックします。
クエリ部分に先ほど入力した内容が反映されているのが確認できました。
これまでと同じようにジョブを実行しますと、今度は2件の同期が完了しました。
同期したMySQLを確認
account テーブルを見ると、Idが昇順になっているのと、BillingCountry はUSA だけのレコードが連携されてきたのが確認できました。
orderby 以外にもJOINでテーブル結合したり、GroupBy で集約したりなどをこの方法で行うことができます。
Tips:作成したジョブをコマンドでAPIを実行
作成したジョブはAPIを用いて実行することが可能です。
ヘッダーメニューからAPIを選択しますと、左側にエンドポイントが表示されます。ジョブの作成から実行、コネクションの作成など、一通りの機能をAPIで行うことができます。
API実行ユーザーの作成
ではまず初めに、APIを実行する場合はAPIを実行できるUserを作成する必要がありますので、ヘッダーの「設定」→「セキュリティ」→「追加」ボタンの順でクリックします。
ユーザー:userとし、権限は制限がかけられますが、全てチェックしたのち「変更を保存」ボタンをクリックします。
ユーザーを作成しますと、認証トークンが作成されます。APIで実行する際に認証トークンが必要となりますので、コピーしたものをエディタなどに貼り付けてください。
実行するAPIの確認
今度はAPIを確認します。ヘッダーの「API」をクリック後、左下の /api.rsc/executeJob をクリックします。
初期表示はJavaScript で実行する内容が表示されています。右のプルダウンで「cURL」を選択すると、httpリクエストができるcurlコマンドが表示されます。
Curlコマンドで実行
今回はcurlコマンドをコマンドプロンプトから実行してみます。まずはタスクバーにあるコマンドプロンプトを起動してください。起動しましたら、以下のコマンドをコピーし、エディタなどに貼り付けてください。貼り付けましたら、x-cdata-authtoken: XXXXXXXXの”XXXXXXXX”に、先ほど作成したユーザーの認証トークンに変更してください。
curl --header "x-cdata-authtoken: XXXXXXXX" -X POST -H "Content-Type: application/json" -d "{ \"JobName\": \"SalesforceToMySQL\"}" "http://localhost:8019/api.rsc/executeJob"
変更しましたら、コマンドプロンプトに貼り付けて実行しましょう。
処理が完了すると、実行結果が返ってきます。
CDataSyncのジョブ画面(SalesforceToMySQL)をご参照ください。最後の更新が今の時間に変更されたのが確認できました。
ちなみに、API を使わなくてもコマンドラインで実行できます。ジョブ設定画面の「スケジュール」タブを選択後、コマンドライントリガーと書かれているコマンドとパラメータで実行することが可能です。実際、Windowsバッチの中に組み込んで使っているユーザさまも多いです。
Tips:スケジューリングして実行
スケジューリング機能はジョブ設定の「スケジュール」タブを選択し、「スケジューラーを有効にする」にチェックを入れますと設定することができます。設定内容は、分~月や、cron式での柔軟な設定を行うことができます。今回はスケジュールの設定だけになりますがやってみましょう。
トップ画面に戻ってください。次の実行が設定されているのが確認できます。
おわり
以上でハンズオンは終了となります。長時間お疲れ様でした。
追加 JDBC Driver for Salesforce でDVBisualizer からSalesforce データを管理
DbVisualizer で Salesforce データに連携しクエリを作成
関連コンテンツ