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 の文字列型にマッピングされます。
始める前に
- PostgreSQL データベースでユーザーを作成する。
- BigQuery Data Transfer Service を有効にするために必要なすべての操作が完了していることを確認します。
- データを保存する 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 アドレスを使用できない場合は、ネットワーク アタッチメントを設定する必要があります。
必要なネットワーク設定の詳細な手順については、次のドキュメントをご覧ください。
- 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 とはをご覧ください。
- 転送構成に関する情報の取得、転送構成の一覧表示、転送の実行履歴の表示など、転送の使用方法については、転送の管理をご覧ください。
- クロスクラウドの操作でデータを読み込む方法を学習する。