Epicor Kinetic のデータをPowerShell でMySQL にレプリケーションする方法

古川えりか
古川えりか
コンテンツスペシャリスト
PowerShell のシンプルなスクリプトで、Epicor Kinetic のデータ をMySQL データベースにレプリケーション(複製)する方法を紹介します。

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

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

ERP インスタンスに接続するには、次の接続プロパティを指定してください。

  • Url:ERP インスタンスをホストしているサーバーのURL。例えば、https://myserver.EpicorSaaS.com
  • ERPInstance:ERP インスタンス名。
  • User:アカウントのユーザー名。
  • Password:アカウントのパスワード。
  • Service:データを取得するサービス。例えば、BaqSvc。

また、オプションで次の接続プロパティを指定することもできます。

  • ApiKey:アカウント設定に応じて、いくつかのサービスへの接続に必要となるオプションのキー。
  • ApiVersion:デフォルトはv1。新しいEpicor API を使用するにはv2 に設定してください。
  • Company:ApiVersion をv2 に設定した場合は必須になります。

Epicor Kinetic のデータの取得

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

    Install-Module EpicorKineticCmdlets
  2. Epicor Kinetic への接続:

      $epicorkinetic = Connect-EpicorKinetic  -Service $Service -ERPInstance $ERPInstance -URL $URL -User $User -Password $Password
      
  3. 取得ターゲットのリソースの取得:

      $data = Select-EpicorKinetic -Connection $epicorkinetic -Table "Customers"
      

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

      $data = Invoke-EpicorKinetic -Connection $epicorkinetic -Query 'SELECT * FROM Customers WHERE CompanyName = @CompanyName' -Params @{'@CompanyName'='CompanyName'}
      
  4. 戻り値からカラム名のリストを保存します。

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

Epicor Kinetic のデータを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. Epicor Kinetic、保存された値、そしてAdd-MySQL Cmdlet を使って、MySQL にデータを1レコードずつ挿入します。この例では、MySQL 側のテーブルは、Epicor Kinetic のリソース(Customers)と同じテーブル名を持っている必要があります。

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

次回以降のレプリケーションをシンプルに実現

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

      Select-EpicorKinetic -Connection $epicorkinetic -Table "Customers" | % {
        $row = $_
        $values = @()
        $columns | % {
          $col = $_
          $values += $row.$($col)
        }
        Add-MySQL -Connection $mysql -Table "Customers" -Columns $columns -Values $values
      }
      
  • 別のPowerShell モジュールで、Epicor Kinetic を別のデータベースに複製する場合、Select-EpicorKinetic cmdlet のデータから、カラム、接続およびテーブルを除外しておきましょう。これらのデータはデータ移動のときだけ必要となるためです。

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

おわりに

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

はじめる準備はできましたか?

Epicor Kinetic Cmdlets の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

Epicor Kinetic Icon Epicor Kinetic Cmdlets お問い合わせ

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