{GCP BigQuery}大文字小文字の区別

 


https://cloud.google.com/bigquery/docs/datasets?hl=ja

データセット名では、デフォルトで大文字と小文字が区別されます。
テーブル名では、デフォルトで大文字と小文字を区別します。

カラム名は大文字と小文字を区別してDBに定義が格納されるが、
大文字小文字の相違しかないカラムは重複しているとみなされる。

 

-- 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データセットを作成する


CREATE SCHEMA ds01;
CREATE SCHEMA DS01;


CREATE SCHEMA ds02
OPTIONS(
  is_case_insensitive=TRUE
);


SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
order by schema_name
;

 

-- 4. 大文字と小文字を区別するデータセットでテーブルを作成する

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

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

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

CREATE TABLE DS01.TAB1
(
  col1 NUMERIC
, col2 STRING
);

CREATE TABLE ds01.tab2
(
  col1 NUMERIC
, COL1 STRING
);

→ Query error: Duplicate column name COL1 in CREATE TABLE at [28:3]

create table ds01.tab3
(
  COL1 numeric
, COL2 string
);


SELECT * FROM ds01.INFORMATION_SCHEMA.TABLES
order by table_name
;

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.INFORMATION_SCHEMA.COLUMNS
order by table_name,column_name
;


-- 5. 大文字と小文字を区別しないデータセットでテーブルを作成する

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

CREATE TABLE ds02.TAB1
(
  col1 NUMERIC
, col2 STRING
);

→ Already Exists: Table project01-9999999:ds02.tab1

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

→ Already Exists: Table project01-9999999:ds02.tab1

CREATE TABLE DS02.TAB1
(
  col1 NUMERIC
, col2 STRING
);

→ Already Exists: Table project01-9999999:ds02.tab1

CREATE TABLE ds02.tab2
(
  col1 NUMERIC
, COL1 STRING
);

→ Duplicate column name COL1 in CREATE TABLE at [4:3]

create table ds02.tab3
(
  COL1 numeric
, COL2 string
);


SELECT * FROM ds02.INFORMATION_SCHEMA.TABLES
order by table_name
;

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

 


-- 6. クリーンアップ


gcloud projects list

gcloud projects delete project01-9999999 \
--quiet