各製品の資料を入手。
詳細はこちら →Salesforce Data Cloud のデータをPowerShell でMySQL にレプリケーションする方法
PowerShell のシンプルなスクリプトで、Salesforce Data Cloud のデータ をMySQL データベースにレプリケーション(複製)する方法を紹介します。
最終更新日:2023-09-26
この記事で実現できるSalesforce Data Cloud 連携のシナリオ
こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
CData Cmdlets for SalesforceDataCloud を使えば、PowerShell からSalesforce Data Cloud のデータ データにリアルタイムで連携できます。データ同期などのタスクの連携にぴったりの製品です。 本記事では、PowerShell からCData Cmdlets for SalesforceDataCloud およびCData Cmdlets for MySQL を使って、同期スクリプトを作成して実行します。
まずは、PowerShell でSalesforce Data Cloud への接続を行います。レプリケーションは4つのステップがあります。
Salesforce Data Cloud は、OAuth 標準による認証をサポートしています。
OAuth
AuthScheme をOAuth に設定します。
デスクトップアプリケーション
CData は、デスクトップでの認証を簡略化する埋め込みOAuth アプリケーションを提供します。
また、Salesforce Data Cloud コンソールで設定および登録するカスタムOAuth アプリケーションを介してデスクトップから認証することもできます。詳しくは、ヘルプドキュメントのカスタムOAuth アプリの作成を参照してください。
接続する前に、次のプロパティを設定します。
- InitiateOAuth:GETANDREFRESH。InitiateOAuth を使えば、繰り返しOAuth の交換を行ったり、手動でOAuthAccessToken を設定する必要はなくなります。
- OAuthClientId (カスタムアプリケーションのみ):カスタムOAuth アプリケーションの登録時に割り当てられたクライアントID。
- OAuthClientSecret (カスタムアプリケーションのみ):カスタムOAuth アプリケーションの登録時に割り当てられたクライアントシークレット。
接続すると、本製品 はデフォルトブラウザでSalesforce Data Cloud のOAuth エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えます。
以下のようにドライバーがOAuth プロセスを完了します。
- コールバックURL からアクセストークンを取得します。
- 古いトークンの期限が切れたときは、新しいアクセストークンを取得します。
- OAuthSettingsLocation にOAuth 値を保存し、接続間で永続化します。
-
モジュールのインストール:
Install-Module SalesforceDataCloudCmdlets
-
Salesforce Data Cloud への接続:
$salesforcedatacloud = Connect-SalesforceDataCloud
-
取得ターゲットのリソースの取得:
$data = Select-SalesforceDataCloud -Connection $salesforcedatacloud -Table "Account"
Invoke-SalesforceDataCloud cmdlet を使って、SQL-92 クエリを使用することもできます:
$data = Invoke-SalesforceDataCloud -Connection $salesforcedatacloud -Query 'SELECT * FROM Account WHERE EmployeeCount = @EmployeeCount' -Params @{'@EmployeeCount'='250'}
-
戻り値からカラム名のリストを保存します。
$columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name
-
モジュールのインストール:
Install-Module MySQLCmdlets
-
MySQL DB に、MySQL Server 名、ユーザー、パスワード、レプリケーション先のデータベース名を指定して、接続します:
$mysql = Connect-MySQL -User $User -Password $Password -Database $Database -Server $Server -Port $Port
-
Salesforce Data Cloud、保存された値、そしてAdd-MySQL Cmdlet を使って、MySQL にデータを1レコードずつ挿入します。この例では、MySQL 側のテーブルは、Salesforce Data Cloud のリソース(Account)と同じテーブル名を持っている必要があります。
$data | % { $row = $_ $values = @() $columns | % { $col = $_ $values += $row.$($col) } Add-MySQL -Connection $mysql -Table "Account" -Columns $columns -Values $values }
-
一度PowerShell でSalesforce Data Cloud とMySQL に接続したら、次からは1行のコマンドでレプリケーションを実施できます:
Select-SalesforceDataCloud -Connection $salesforcedatacloud -Table "Account" | % { $row = $_ $values = @() $columns | % { $col = $_ $values += $row.$($col) } Add-MySQL -Connection $mysql -Table "Account" -Columns $columns -Values $values }
-
別のPowerShell モジュールで、Salesforce Data Cloud を別のデータベースに複製する場合、Select-SalesforceDataCloud cmdlet のデータから、カラム、接続およびテーブルを除外しておきましょう。これらのデータはデータ移動のときだけ必要となるためです。
$columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name | ? {$_ -NotIn @('Columns','Connection','Table')}
Web アプリケーションやヘッドレスマシンを含むその他のOAuth メソッドについては、ヘルプドキュメントを参照してください。
Salesforce Data Cloud のデータの取得
Salesforce Data Cloud のデータをMySQL データベースにレプリケーション
カラム名を指定できるようにして、データをMySQL データベースにレプリケーションします。
次回以降のレプリケーションをシンプルに実現
おわりに
これで、Salesforce Data Cloud のデータをMySQL に複製できました。分析、BI などでSalesforce Data Cloud のデータをMySQL から使うことができるようになります。