PostgreSQL 転送のスケジュールを設定する

PostgreSQL コネクタ向け BigQuery Data Transfer Service を使用すると、ユーザーはオンデマンドおよび定期的なデータ転送ジョブを作成して、PostgreSQL インスタンスから BigQuery にデータを転送できます。このコネクタは、オンプレミス環境、Cloud SQL、および Amazon Web Services(AWS)や Microsoft Azure などの他のパブリック クラウド プロバイダでホストされている PostgreSQL インスタンスをサポートしています。

制限事項

PostgreSQL のデータ転送には、次の制限があります。

  • 1 つの PostgreSQL データベースへの同時転送実行の最大数は、PostgreSQL データベースでサポートされている同時接続の最大数によって決まります。転送ジョブの同時実行数は、PostgreSQL データベースでサポートされている同時接続の最大数より小さい値に制限する必要があります。
  • PostgreSQL では、一部のデータ型はデータ損失を回避するために BigQuery の文字列型にマッピングされる場合があります。たとえば、PostgreSQL で定義されている数値型で、precision と scale が定義されていないものは、BigQuery の文字列型にマッピングされます。

始める前に

必要なロール

Pub/Sub の転送実行通知を設定する場合は、Identity and Access Management(IAM)権限の pubsub.topics.setIamPolicy が付与されていることを確認します。メール通知のみを設定する場合は、Pub/Sub の権限は必要ありません。詳細については、BigQuery Data Transfer Service の実行通知をご覧ください。

PostgreSQL データ転送の作成に必要な権限を取得するには、プロジェクトに対する BigQuery 管理者 roles/bigquery.admin)IAM ロールを付与するよう管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには、PostgreSQL のデータ転送の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

PostgreSQL のデータ転送を作成するには、次の権限が必要です。

  • bigquery.transfers.update
  • bigquery.datasets.get

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

ネットワーク接続

PostgreSQL データベース接続にパブリック IP アドレスを使用できない場合は、ネットワーク アタッチメントを設定する必要があります。

必要なネットワーク設定の詳細な手順については、次のドキュメントをご覧ください。

PostgreSQL のデータ転送を設定する

次のオプションのいずれかを選択します。

コンソール

  1. [データ転送] ページに移動します。

    [データ転送] に移動

  2. [転送を作成] をクリックします。

  3. [ソースタイプ] セクションの [ソース] で、[PostgreSQL] を選択します。

  4. [転送構成名] セクションの [表示名] に、転送名を入力します。転送名には、後で修正が必要になった場合にその転送を特定できる任意の名前を使用できます。

  5. [スケジュール オプション] セクションで、次の操作を行います。

    • [繰り返しの頻度] を選択します。[時間]、[](デフォルト)、[]、[] のいずれかを選択する場合は、頻度も指定する必要があります。[カスタム] オプションを選択して、より詳細な繰り返し頻度を作成することもできます。[オンデマンド] オプションを選択すると、このデータ転送は手動で転送をトリガーした場合にのみ実行されます。
    • 必要に応じて、[すぐに開始] を選択するか、[設定した時刻に開始] オプションを選択して開始日と実行時間を指定します。
  6. [転送先の設定] セクションの [データセット] で、データを保存するために作成したデータセットを選択するか、[新しいデータセットの作成] をクリックして、転送先データセットとして使用するデータセットを作成します。

  7. [データソースの詳細] セクションで、次のようにします。

    • [ネットワーク アタッチメント] で、既存のネットワーク アタッチメントを選択するか、[ネットワーク アタッチメントの作成] をクリックします。詳細については、このドキュメントの「ネットワーク接続」セクションをご覧ください。
    • [ホスト] に、PostgreSQL データベース サーバーのホスト名または IP アドレスを入力します。
    • [ポート番号] に、PostgreSQL データベース サーバーのポート番号を入力します。
    • [データベース名] に、PostgreSQL データベースの名前を入力します。
    • [ユーザー名] に、PostgreSQL データベース接続を開始する PostgreSQL ユーザーのユーザー名を入力します。
    • [パスワード] に、PostgreSQL データベース接続を開始する PostgreSQL ユーザーのパスワードを入力します。
    • [転送する PostgreSQL オブジェクト] では、次のいずれかを行います。

      • [参照] をクリックして、転送に必要な PostgreSQL テーブルを選択し、[選択] をクリックします。
      • 転送する PostgreSQL オブジェクトのテーブル名を手動で入力します。

    [転送を作成] ページのデータソースの詳細

  8. 省略可: [サービス アカウント] メニューで、転送を承認するカスタム サービス アカウントを指定します。使用されるサービス アカウントに必要なロールと権限がすべて付与されていることを確認します。詳細については、オーナーをサービス アカウントとして移行するをご覧ください。

  9. 省略可: [通知オプション] セクションで、次のようにします。

    • メール通知を有効にするには、[メール通知] の切り替えをクリックしてオンにします。このオプションを有効にすると、転送の実行が失敗した場合に転送管理者にメール通知が送信されます。
    • 転送の Pub/Sub 実行通知を構成するには、[Pub/Sub 通知] の切り替えをクリックしてオンにします。トピック名を選択するか、[トピックを作成する] をクリックしてトピックを作成します。
  10. [保存] をクリックします。

bq

bq mk コマンドを入力して、転送作成フラグ --transfer_config を指定します。

bq mk \
    --transfer_config \
    --project_id=PROJECT_ID \
    --data_source=DATA_SOURCE \
    --display_name=DISPLAY_NAME \
    --target_dataset=DATASET \
    --params='PARAMETERS'

次のように置き換えます。

  • PROJECT_ID(省略可): Google Cloud プロジェクト ID。--project_id フラグで特定のプロジェクトを指定しない場合は、デフォルトのプロジェクトが使用されます。
  • DATA_SOURCE: データソース(postgresql)。
  • DISPLAY_NAME: データ転送構成の表示名。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
  • DATASET: データ転送構成のターゲット データセット。
  • PARAMETERS: 作成される転送構成のパラメータを JSON 形式で指定します。例: --params='{"param":"param_value"}'。PostgreSQL 転送のパラメータは次のとおりです。

    • networkAttachment(省略可): PostgreSQL データベースに接続するネットワーク アタッチメントの名前。
    • connector.database: PostgreSQL データベースの名前。
    • connector.endpoint.host: データベースのホスト名または IP アドレス。
    • connector.endpoint.port: データベースのポート番号。
    • connector.authentication.username: データベース ユーザーのユーザー名
    • connector.authentication.password: データベース ユーザーのパスワード。
    • assets: 転送の一部として PostgreSQL データベースから転送される PostgreSQL のテーブル名のリスト。

たとえば、次のコマンドは My Transfer という名前の PostgreSQL 転送を作成します。

bq mk \
    --transfer_config \
    --target_dataset=mydataset \
    --data_source=postgresql \
    --display_name='My Transfer' \
    --params='{"assets":["DB1/PUBLIC/DEPARTMENT","DB1/PUBLIC/EMPLOYEES"], \
        "connector.authentication.username": "User1", \
        "connector.authentication.password":"ABC12345", \
        "connector.database":"DB1", \
        "Connector.endpoint.host":"192.168.0.1", \
        "Connector.endpoint.port":"1520"}' 

API

projects.locations.transferConfigs.create メソッドを使用して、TransferConfig リソースのインスタンスを指定します。

データ型マッピング

次の表では、PostgreSQL のデータ型を対応する BigQuery のデータ型にマッピングしています。

PostgreSQL のデータ型 BigQuery のデータ型
bigint INTEGER
bigserial INTEGER
bit(n) STRING
bit varying(n) STRING
boolean BOOLEAN
bytea BYTES
character STRING
character varying STRING
double precision FLOAT
integer INTEGER
numeric(precision, scale)/decimal(precision, scale) NUMERIC
real FLOAT
smallint INTEGER
smallserial INTEGER
serial INTEGER
text INTEGER
date DATE
time [ (p) ] [ without timezone ] TIMESTAMP
time [ (p) ] with time zone TIMESTAMP
timestamp [ (p) ] [ without timezone ] TIMESTAMP
timestamp [ (p) ] with time zone TIMESPAMP
xml STRING
tsquery STRING
tsvector STRING
uuid STRING
box STRING
cidr STRING
circle STRING
inet STRING
interval STRING
json STRING
jsonb STRING
line STRING
lseg STRING
macaddr STRING
macaddr8 STRING
money STRING
path STRING
point STRING
polygon STRING

トラブルシューティング

データ転送の設定で問題が発生した場合は、PostgreSQL の転送に関する問題をご覧ください。

次のステップ