{GCP BigQuery}テーブルデータのエクスポート

 

https://cloud.google.com/bigquery/docs/exporting-data?hl=ja
https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-csv?hl=ja

 

可能なエクスポート先は Cloud Storage だけです

1 つのファイルに最大 1 GB のテーブルデータをエクスポートできます。
1 GB を超えるデータをエクスポートする場合は、ワイルドカードを使用してデータを複数のファイルにエクスポートします。


※サイズが1GBを超えない場合も、uriワイルドカードを使用しない場合下記エラー
Invalid uri specification. Option 'uri' value must be a wild card URI.

 


-- 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-southeast1 --quiet
gcloud config set compute/zone asia-southeast1-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

gcloud components update


-- 2. BigQuery API有効化

gcloud services list --enabled


gcloud services enable bigquery.googleapis.com \
--project project01-9999999

 

-- 3. BigQueryデータセットを作成する

bq mk ds01

bq ls

 

-- 4. テストテーブルの作成


CREATE TABLE ds01.tab1
(
col1 STRING,
col2 NUMERIC
)
;

select * from ds01.INFORMATION_SCHEMA.TABLES
order by table_name
;

SELECT *
FROM ds01.INFORMATION_SCHEMA.COLUMNS
order by table_name,column_name
;

insert into ds01.tab1 values('X',100);
insert into ds01.tab1 values('Y',200);
insert into ds01.tab1 values('Z',300);


select * from ds01.tab1;

 

-- 5. バケットの作成

gcloud storage buckets create gs://bucket123 \
--default-storage-class=Standard \
--no-enable-autoclass \
--location=asia-northeast1 \
--public-access-prevention \
--uniform-bucket-level-access

gcloud storage ls

 

-- 6. テーブルデータのエクスポート


EXPORT DATA
  OPTIONS (
    uri = 'gs://bucket123/ds01/tab1.*.csv',
    format = 'CSV',
    overwrite = true,
    header = true,
    field_delimiter = ',')
AS (
  SELECT col1, col2
  FROM ds01.tab1
  ORDER BY col1
);

gcloud storage ls --long gs://bucket123/*

 

-- 7. テーブルデータのインポート


LOAD DATA OVERWRITE ds01.tab2
FROM FILES (
  format = 'CSV',
  uris = ['gs://bucket123/ds01/tab1.000000000000.csv']);


select * from ds01.INFORMATION_SCHEMA.TABLES
order by table_name
;

SELECT *
FROM ds01.INFORMATION_SCHEMA.COLUMNS
order by table_name,column_name
;


select * from ds01.tab2;


-- 8. クリーンアップ
gcloud storage rm gs://bucket123 --recursive
gcloud storage ls

 


gcloud projects list

gcloud projects delete project01-9999999 \
--quiet