FinancialForce データをMySQL にレプリケーションするPowerShell スクリプト

詳細情報をご希望ですか?

無償トライアル:

ダウンロードへ

製品の詳細情報へ:

FinancialForce Data Cmdlets

FinancialForce データにリアルタイム連携を実現するPowerShell Cmdlets。Cmdlets を使って、SQL Server と同感覚で多様なデータにリアルタイムアクセス。



PowerShell でシンプルなスクリプトを記述し、FinancialForce data をMySQL データベースにレプリケーション(複製)。

CData Cmdlets for FinancialForce をつかって、PowerShell からリアルタイムFinancialForce data に連携できます。データ同期などのタスクの連携にぴったりの製品です。 本記事では、PowerShell からCData Cmdlets for FinancialForce およびCData Cmdlets for MySQL を使って、同期スクリプトを作成して実行します。

まずは、PowerShell でFinancialForce への接続を行います。レプリケーションは4つのステップがあります。

There are several authentication methods available for connecting to FinancialForce: login credentials, SSO, and OAuth.

Authenticating with a Login and Token

Set the User and Password to your login credentials. Additionally, set the SecurityToken. By default, the SecurityToken is required, but you can make it optional by allowing a range of trusted IP addresses.

To disable the security token:

  1. Log in to FinancialForce and enter "Network Access" in the Quick Find box in the setup section.
  2. Add your IP address to the list of trusted IP addresses.

To obtain the security token:

  1. Open the personal information page on FinancialForce.com.
  2. Click the link to reset your security token. The token will be emailed to you.
  3. Specify the security token in the SecurityToken connection property or append it to the Password.

Authenticating with OAuth

If you do not have access to the user name and password or do not want to require them, use the OAuth user consent flow. See the OAuth section in the Help for an authentication guide.

Connecting to FinancialForce Sandbox Accounts

Set UseSandbox to true (false by default) to use a FinancialForce sandbox account. Ensure that you specify a sandbox user name in User.

FinancialForce データの取得

  1. モジュールのインストール:

    Install-Module FinancialForceCmdlets
  2. FinancialForce への接続:

    $financialforce = Connect-FinancialForce -User $User -Password $Password -Security Token $Security Token
  3. 取得ターゲットのリソースの取得:

    $data = Select-FinancialForce -Connection $financialforce -Table "Account"

    Invoke-FinancialForce cmdlet を使って、SQL-92 クエリを使用することもできます:

    $data = Invoke-FinancialForce -Connection $financialforce -Query 'SELECT * FROM Account WHERE Industry = @Industry' -Params @{'@Industry'='Floppy Disks'}
  4. 戻り値からカラム名のリストを保存します。

    $columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name

FinancialForce データをMySQL データベースに入れます

カラム名を指定できるようにして、データをMySQL データベースにレプリケーションします。

  1. モジュールのインストール:

    Install-Module MySQLCmdlets
  2. MySQL DB に、MySQL Server 名、ユーザー、パスワード、レプリケーション先のデータベース名を指定して、接続します:

    $mysql = Connect-MySQL -User $User -Password $Password -Database $Database -Server $Server -Port $Port
  3. FinancialForce、保存された値、そしてAdd-MySQL Cmdlet を使って、MySQL にデータを1レコードずつ挿入します。この例では、MySQL 側のテーブルは、FinancialForce のリソース(Account)と同じテーブル名を持っている必要があります。

    $data | % { $row = $_ $values = @() $columns | % { $col = $_ $values += $row.$($col) } Add-MySQL -Connection $mysql -Table "Account" -Columns $columns -Values $values }

これで、FinancialForce データをMySQL に複製できました。これで、分析、BI などでFinancialForce データをMySQL から使うことができるようになります。

Notes

  • 一度PowerShell でFinancialForce とMySQL に接続したら、次からは1行のコマンドでレプリケーションを実施できます:

    Select-FinancialForce -Connection $financialforce -Table "Account" | % { $row = $_ $values = @() $columns | % { $col = $_ $values += $row.$($col) } Add-MySQL -Connection $mysql -Table "Account" -Columns $columns -Values $values }
  • 別のPowerShell モジュールで、FinancialForce を別のデータベースに複製する場合、Select-FinancialForce cmdlet のデータから、カラム、接続およびテーブルを除外する方がいいでしょう。これらのデータは、CData cmdlet からデータを移動する際にのみ必要なものだからです。:

    $columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name | ? {$_ -NotIn @('Columns','Connection','Table')}