https://cloud.google.com/bigquery/docs/cloud-storage-transfer?hl=ja
BigQuery Data Transfer Service for Cloud Storage コネクタでは、
Cloud Storage から BigQuery への定期的なデータ読み込みをスケジュールできます。
-- 1. 前作業
gcloud init
gcloud auth list
gcloud --version
gcloud projects create project01-9999999 \
--name="project01"
gcloud config list
gcloud config set project project01-9999999
gcloud config set compute/region asia-northeast1 --quiet
gcloud config set compute/zone asia-northeast1-a --quiet
gcloud beta billing accounts list
gcloud beta billing projects link project01-9999999 --billing-account=111111-111111-111111
gcloud services enable compute.googleapis.com --project project01-9999999
-- 2. BigQuery API 、BigQuery Data Transfer API の有効化
gcloud services list --enabled
gcloud services enable bigquery.googleapis.com --project project01-9999999
gcloud services enable bigquerydatatransfer.googleapis.com --project project01-9999999
-- 3. バケットの作成
gcloud storage buckets create gs://bucket99999999 \
--default-storage-class=Standard \
--no-enable-autoclass \
--location=us \
--public-access-prevention \
--uniform-bucket-level-access
gcloud storage ls
-- 4. ファイルのアップロード
echo test > test.csv
gcloud storage cp test.csv gs://bucket99999999
gcloud storage ls --long gs://bucket99999999/*
-- 5. BigQueryデータセットを作成する
CREATE SCHEMA ds01;
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
order by schema_name
;
-- 6. 宛先テーブルを作成
CREATE TABLE ds01.tab1
(
col1 STRING
)
;
select * from ds01.tab1;
-- 7. Cloud Storage の転送を設定する
bq mk \
--transfer_config \
--project_id=project01-9999999 \
--data_source=google_cloud_storage \
--display_name=ts01 \
--target_dataset=ds01 \
--params='{"data_path_template":"gs://bucket99999999/*.csv",
"write_disposition":"MIRROR",
"destination_table_name_template":"tab1",
"file_format":"CSV",
"max_bad_records":"0",
"ignore_unknown_values":"false",
"field_delimiter":",",
"skip_leading_rows":"0",
"allow_quoted_newlines":"true",
"allow_jagged_rows":"false",
"delete_source_files":"false"}'
※登録するとトランスファーが始まる
bq ls --transfer_config --transfer_location=us
select * from ds01.tab1;
-- 8. 手動で転送をトリガーする
bq ls --transfer_config --transfer_location=us
echo hoge > test.csv
gcloud storage cp test.csv gs://bucket99999999
gcloud storage ls --long gs://bucket99999999/*
bq mk \
--transfer_run \
--run_time='2024-11-10T00:50:00+09:00' \
projects/111111111111/locations/us/transferConfigs/11111111-1111-1111-1111-111111111111
※run_timeの値に関係なく、実行したタイミングでトランスファーが始まる
bq ls --transfer_config --transfer_location=us
select * from ds01.tab1;
-- 9. クリーンアップ
gcloud projects list
gcloud projects delete project01-9999999 -q
gcloud beta billing projects unlink project01-9999999