CData シリーズ

CDataにはキャッシュ機能があります。一般的にキャッシュ機能は一時的にデータを保管してパフォーマンスをチューニングする機能として利用されます。しかし、CDataのキャッシュ機能は、それだけでなくオンプレミスの社内データベースにクラウドサービスのデータをコピーすることにも使えます。

この記事では、CData ODBC Driver for Salesforceを使ってSalesforceの取引先(Account)データをSQL Server 2012にコピーする手順を紹介します。
同様な手順を使えば、CData ADO.NET Provider、CData JDBC Driverでもコピーが可能ですし、コピー先のデータベースもSQL Serverだけでなく、MySQLやOracle DataBaseなども使用できます。

1)コピー先のSQL Serverにデータベースを準備する​

コピー先のSQL ServerにSalesforceのデータを受け入れるデータベースを準備します。この記事では、SALESFORCEという名前のデータベースを準備しました。

画像「データベースに接続」

2)CData ODBC Driverに接続プロパティを設定する。

CData ODBC Driver for SalesforceをインストールするとODBCデータソースアドミニストレーターにCData Salesforce Source(CData Salesforce Source x64)が作成されます。

画像「空のデータベースを作成」

[構成]ボタンをクリックし、CData ODBC Driverに下記のように接続プロパティを設定します。

User ご自身のSalesforceアカウントのユーザーを設定してください。
Password ご自身のSalesforceアカウントのパスワードを設定してください。
Security Token ご自身のSalesforceアカウントのセキュリティトークンを設定してください。
Cache Connection Data Source=localhost\SFREP;Initial Catalog=SALESFORCE;Integrated Security = SSPI;
ご自身の環境の接続文字列を設定してください。
今回はローカルマシンにあるSFREPというインスタンスのSALESFORCEというデータベースにWindows認証で接続する文字列を設定しています。
Cache Provider System.Data.SqlClient
コピー先のデータベースのADO.NETプロバイダを指定してください。
今回はSQL Server用のプロバイダを指定しています。
画像「DSN構成」

また、環境によってはProxyやFirewallを設定する必要があります。その場合はCDataの製品ヘルプ - [接続文字列オプション]などを参照してください。
ヘルプは、ダウンロードフリーのトライアル版にも収録されています。

トライアル版をダウンロードする

3)CACHEステートメントを実行する。

CDataには一般的なSELECTなどのステートメントのほかにCACHEステートメントがあります。このCACHEステートメントを使用してコピーを作成することができます。またODBCの実行にはWindows Power Shellをこの記事では使用します。C:\tempフォルダにexec_odbc.ps1というファイル名で以下のようなスクリプトを記述します。

# ライブラリ読み込み
            [void][System.Reflection.Assembly]::LoadWithPartialName("System.Data")
            
            # DB接続
            $connectionString = "DSN=CData Salesforce Source x64;"
            $odbcCon = New-Object System.Data.Odbc.OdbcConnection($connectionString)
            $odbcCon.Open()
            
            # コマンドオブジェクト作成
            $odbcCmd = New-Object System.Data.Odbc.OdbcCommand
            $odbcCmd.Connection = $odbcCon
            
            # コマンド実行
            $odbcCmd.CommandText = "CACHE SELECT * from Account"
            $odbcCmd.ExecuteNonQuery() | Out-Null
            
            # コマンドオブジェクト破棄
            $odbcCmd.Dispose()
            
            # DB切断
            $odbcCon.Close()
            $odbcCon.Dispose()
            

このスクリプトの中でCACHE SELECT * from Accountというクエリを実行しています。このクエリを実行することで、取引先データ(Account)のコピーが作られます。

作ったスクリプトexec_odbc.ps1を実行します。

画像「スクリプト実行画面」

4)コピーを確認する。

SQL Server Management Studioでコピーが作られているか確認してみましょう。

画像「コピーの確認」

SALESFORCEデータベースの中にAccountテーブルが作成されました。テーブルの中身もきちんとデータが入っています。

この記事で紹介した手順を一言で表すと
「クラウドサービスとコピー先のデータベースの接続文字列をそれぞれ設定し、CACHEステートメントを実行する。」
これだけになります。データ移行やシステム連携などのプロジェクトに携わっている方であれば、かなりの効率化につながることを感じていただけたのではないかと思います。

厳密なリアルタイム性が求められない参照系の業務であれば、この記事で紹介したCDataのキャッシュ(コピー)機能を用いるだけで、実用に耐えうるクラウドサービスと社内システムの連携を実現できます。しかも、社内のシステム構成を変えることなくCDataのキャッシュ機能を追加するだけなので、システム変更にともなうリスクもほぼありません。トライアル版を公開していますので、ぜひ、ご自分の環境でお試しください。



製品・サービスに関する
ご質問・ご相談など、
お気軽にお問合せください。

電話でお問合せ

048-222-3001

(平日 9:00~12:00、13:00~18:00)