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

PowerShell のシンプルなスクリプトで、Confluence のデータ をMySQL データベースにレプリケーション(複製)する方法を紹介します。

古川えりか
コンテンツスペシャリスト

最終更新日:2023-09-26

この記事で実現できるConfluence 連携のシナリオ

こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。

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

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

Confluence 接続プロパティの取得・設定方法

任意のConfluence Cloud またはConfluence Server インスタンスへの接続を確立できます。接続するにはURL 接続プロパティを設定します。例えば、https://yoursitename.atlassian.net です。

Confluence への認証

Confluence は、次の認証メソッドをサポートしています:API トークン、Basic 認証、OAuth 2.0、SSO。

API トークン - Confluence Cloud アカウント

トークンの取得

アカウント認証にはAPI トークンが必要です。API トークンを生成するには、Atlassian アカウントにログインしてAPI トークン -> API トークンの作成を選択します。生成されたトークンが表示されます。

トークンを使用する認証

Cloud アカウントへの認証を行うには、以下を入力します。

  • AuthScheme:APIToken に設定。
  • User:Confluence サーバーに認証する際に使用されるユーザー。
  • APIToken:現在認証されているユーザーに紐づくAPI トークン。
  • Url:Confluence エンドポイントに紐づくURL。例えば、https://yoursitename.atlassian.net です。

Basic 認証 - Confluence Server インスタンス

Server インスタンスへの認証を行うには、以下のように指定します。

  • AuthSchemeBasic に設定。
  • User:Confluence インスタンスに認証する際に使用されるユーザー。
  • Password:Confluence サーバーに認証する際に使われるパスワード。
  • Url:Confluence エンドポイントに紐づくURL。例えば、https://yoursitename.atlassian.net です。
その他の認証方法と詳細については、ヘルプドキュメントの「はじめに」セクションを参照してください。

Confluence のデータの取得

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

    Install-Module ConfluenceCmdlets
  2. Confluence への接続:

    $confluence = Connect-Confluence -User $User -APIToken $APIToken -Url $Url -Timezone $Timezone
  3. 取得ターゲットのリソースの取得:

    $data = Select-Confluence -Connection $confluence -Table "Pages"

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

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

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

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

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

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

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

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

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

おわりに

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

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。