PostgreSQL 転送のスケジュールを設定する
BigQuery Data Transfer Service for PostgreSQL コネクタを使用すると、オンデマンドおよび定期的なデータ転送ジョブを作成して、PostgreSQL インスタンスから BigQuery にデータを転送できます。このコネクタは、オンプレミス環境、Cloud SQL、および Amazon Web Services(AWS)や Microsoft Azure などの他のパブリック クラウド プロバイダでホストされている PostgreSQL インスタンスをサポートしています。
制限事項
PostgreSQL のデータ転送には、次の制限があります。
- 1 つの PostgreSQL データベースへの同時転送実行の最大数は、PostgreSQL データベースでサポートされている同時接続の最大数によって決まります。同時実行転送ジョブの数は、PostgreSQL データベースでサポートされている同時接続の最大数より小さい値に制限する必要があります。
- PostgreSQL では、一部のデータ型はデータ損失を回避するために BigQuery の文字列型にマッピングされます。たとえば、精度とスケールが定義されていない PostgreSQL で定義された数値型は、BigQuery の文字列型にマッピングされます。
始める前に
- PostgreSQL データベースにユーザーを作成する。
- BigQuery Data Transfer Service を有効にするために必要なすべての操作が完了していることを確認します。
- データを保存する BigQuery データセットを作成します。
- このドキュメントのタスクを完了するために必要なロールがあることを確認します。
必要なロール
Pub/Sub の転送実行通知を設定する場合は、pubsub.topics.setIamPolicy
Identity and Access Management(IAM)権限があることを確認します。メール通知を設定するだけの場合、Pub/Sub の権限は必要ありません。詳細については、BigQuery Data Transfer Service の実行通知をご覧ください。
PostgreSQL データ転送の作成に必要な権限を取得するには、プロジェクトに対する BigQuery 管理者 (roles/bigquery.admin
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
この事前定義ロールには、PostgreSQL データ転送の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
PostgreSQL データ転送を作成するには、次の権限が必要です。
-
bigquery.transfers.update
-
bigquery.datasets.get
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
ネットワーク接続
PostgreSQL データベース接続でパブリック IP アドレスを使用できない場合は、ネットワーク アタッチメントを設定する必要があります。
必要なネットワーク設定の詳細な手順については、次のドキュメントをご覧ください。
- Cloud SQL から転送する場合は、Cloud SQL インスタンスへのアクセスを構成するをご覧ください。
- AWS から転送する場合は、AWS-Google Cloud VPN とネットワーク アタッチメントを設定するをご覧ください。
- Azure から転送する場合は、Azure とGoogle Cloud の VPN とネットワーク アタッチメントを設定するをご覧ください。
PostgreSQL のデータ転送を設定する
次のオプションのいずれかを選択します。
コンソール
[データ転送] ページに移動します。
[転送を作成] をクリックします。
[ソースタイプ] セクションの [ソース] で、[PostgreSQL] を選択します。
[転送構成名] セクションの [表示名] に、転送名を入力します。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
[スケジュール オプション] セクションで、次の操作を行います。
- 繰り返しの頻度を選択します。[時間]、[日](デフォルト)、[週]、[月] のいずれかを選択する場合は、頻度も指定する必要があります。[カスタム] オプションを選択して、より具体的な繰り返し頻度を作成することもできます。[オンデマンド] オプションを選択すると、手動で転送をトリガーした場合にのみ、このデータ転送が実行されます。
- 必要に応じて、[すぐに開始可能] または [設定した時刻に開始] オプションを選択し、開始日と実行時間を指定します。
[転送先の設定] セクションの [データセット] で、データを保存するために作成したデータセットを選択するか、[新しいデータセットの作成] をクリックして、転送先データセットとして使用するデータセットを作成します。
[データソースの詳細] セクションで、次のようにします。
- [ネットワーク アタッチメント] で、既存のネットワーク アタッチメントを選択するか、[ネットワーク アタッチメントの作成] をクリックします。詳細については、このドキュメントのネットワーク接続のセクションをご覧ください。
- [ホスト] に、PostgreSQL データベース サーバーのホスト名または IP アドレスを入力します。
- [ポート番号] に、PostgreSQL データベース サーバーのポート番号を入力します。
- [データベース名] に、PostgreSQL データベースの名前を入力します。
- [ユーザー名] に、PostgreSQL データベース接続を開始する PostgreSQL ユーザーのユーザー名を入力します。
- [パスワード] に、PostgreSQL データベース接続を開始する PostgreSQL ユーザーのパスワードを入力します。
転送する PostgreSQL オブジェクトの場合は、次のいずれかを行います。
- [参照] をクリックして、転送に必要な PostgreSQL テーブルを選択し、[選択] をクリックします。
- 転送する PostgreSQL オブジェクトのテーブル名を手動で入力します。
省略可: [サービス アカウント] メニューで、転送を承認するカスタム サービス アカウントを指定します。使用しているサービス アカウントに必要なロールと権限がすべて付与されていることを確認します。詳細については、サービス アカウントとしてオーナーを転送するをご覧ください。
省略可: [通知オプション] セクションで、次のようにします。
[保存] をクリックします。
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 の転送に関する問題をご覧ください。
次のステップ
- BigQuery Data Transfer Service の概要については、BigQuery Data Transfer Service とはをご覧ください。
- 転送構成に関する情報の取得、転送構成の一覧表示、転送の実行履歴の表示など、転送の使用方法については、転送の管理をご覧ください。
- クロスクラウドの操作でデータを読み込む方法を学習する。