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

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

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

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

まず、Profile 接続プロパティにPrintify プロファイルのディスク上の場所を設定します(例:C:\profiles\Profile.apip)。次に、ProfileSettings 接続プロパティにPrintify の接続文字列を設定します(以下を参照)。

Printify API プロファイル設定

Printify に認証するには、API Key を提供する必要があります。API Key を取得するには、My Profile に移動し、次にConnections に移動します。Connections セクションで、Personal Access Token(API Key)を生成し、Token Access Scopes を設定できます。Personal Access Token の有効期限は1年間です。有効期限が切れたPersonal Access Token は、同じ手順で再生成できます。ProfileSettings プロパティにPersonal Access Token をAPI Key として設定して接続します。

Printify のデータの取得

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

    Install-Module APICmdlets
  2. Printify への接続:

      $api = Connect-API  -Profile $Profile -ProfileSettings $ProfileSettings
      
  3. 取得ターゲットのリソースの取得:

      $data = Select-API -Connection $api -Table "Tags"
      

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

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

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

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

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

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

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

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

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

おわりに

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

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

API Driver で Printify のライブデータに接続

Printify に接続 お問い合わせ