source

BigQuery 테이블의 스키마를 JSON으로 내보낼 수 있는 방법이 있습니까?

itover 2023. 4. 2. 10:21
반응형

BigQuery 테이블의 스키마를 JSON으로 내보낼 수 있는 방법이 있습니까?

BigQuery 테이블에는 웹 UI에서 표시, 업데이트 또는 데이터 로딩에 사용할 수 있는 스키마가 있습니다.bq도구를 JSON 파일로 사용합니다.그러나 이 스키마를 기존 테이블에서 JSON 파일로 덤프하는 방법을 찾을 수 없습니다(가능한 경우 명령줄에서).그게 가능한가요?

기존 테이블에서 JSON 파일로 스키마를 덤프하는 방법(커맨드 라인에서 바람직)그게 가능한가요?

아래에서 시도하다

bq show bigquery-public-data:samples.wikipedia  

–format 플래그를 사용하여 출력을 예쁘게 만들 수 있습니다.

--format : none | json | prettyjson | csv | pretty :

명령어 출력 형식.옵션은 다음과 같습니다.

none:       ...
pretty:     formatted table output  
sparse:     simpler table output  
prettyjson: easy-to-read JSON format  
json:       maximally compact JSON  
csv:        csv format with header   

처음 3개는 사람이 읽을 수 있도록 제작되었으며, 나머지 3개는 다른 프로그램으로 전달하기 위한 것입니다.형식을 선택하지 않은 경우 명령 실행을 기준으로 형식이 선택됩니다.

부분적인 답변을 드린 것을 깨달았습니다.o)

PO가 원하는 것은 다음과 같습니다.

bq show --format=prettyjson bigquery-public-data:samples.wikipedia | jq '.schema.fields' 

플래그를 추가할 수 있습니다.--schema테이블 데이터 정보를 피하기 위해 [1]을 클릭합니다.

bq show --schema --format=prettyjson [PROJECT_ID]:[DATASET].[TABLE] > [SCHEMA_FILE]

bq show --schema --format=prettyjson myprojectid:mydataset.mytable > /tmp/myschema.json

[1] https://cloud.google.com/bigquery/docs/managing-table-schemas

응답 갱신

또한 2020년 10월부터 다음에서 SQL 쿼리를 실행할 수 있습니다.INFORMATION_SCHEMA.COLUMNS일종의 자기성찰적인 기능이죠.

SELECT *
FROM <YOUR_DATASET>.INFORMATION_SCHEMA.COLUMNS

다음과 같은 집계 기능을 사용하여 데이터를 중첩합니다.

SELECT table_name, ARRAY_AGG(STRUCT(column_name, data_type)) as columns
FROM <YOUR_DATASET>.INFORMATION_SCHEMA.COLUMNS
GROUP BY table_name

또, 에서의 흥미로운 메타데이터이기도 합니다.INFORMATION_SCHEMA.VIEWS소스코드가 필요한 경우.

그런 다음 BigQuery 인터페이스에서 Save results / JSON을 누르거나 이 인터페이스를bq query커맨드 라인이 표시됩니다.

출처: BigQuery 릴리즈 노트

  1. bq UI에서 테이블을 선택합니다.
  2. 스키마를 내보낼 열을 선택합니다.
  3. 복사 메뉴를 사용하여 스키마를 JSON으로 복사합니다.

테이블 스키마

REST API 호출을 사용하여 BigQuery 테이블 스키마를 JSON으로 가져올 수 있습니다.문서 링크: https://cloud.google.com/bigquery/docs/reference/rest/v2/tables/get

curl 'https://bigquery.googleapis.com/bigquery/v2/projects/project-name/datasets/dataset-name/tables/table-name' \
     --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
     --header 'Accept: application/json' \
     --compressed

2022년 5월 15일 현재, 이는 다음과 같이 작동했습니다.

  1. 구글 클라우드에서 클라우드 쉘로 이동합니다.
  2. 클라우드 셸의 드롭다운(왼쪽)에서 프로젝트를 선택합니다.
  3. 다음 명령어 bq show --syslog --format=prettyjson을 사용합니다.

다음 bash 스크립트와 sql은 데이터셋에서 모든 테이블스키마를 JSON 파일로 추출하는 문제를 해결하는 데 항상 도움이 되었습니다.

#!/bin/bash
#gen-default-schema.sh
input=$1
source_type=$2
result=tables_${source_type}.result

bq query --format=csv --use_legacy_sql=false --flagfile=$input | awk '{if(NR>1)print}' > $result

while IFS= read -r line
do
    tbl_name=`echo "$line" | awk -F. '{print $NF}'`
    schema_file=`echo "$tbl_name" | cut -d'_' -f2-`.schema
    echo $schema_file
    bq show --schema --format=prettyjson $line > ./temp/${source_type}/${schema_file}
    echo "done"
done < "$result"

입력 파일example.sql($1)

SELECT
  table_catalog || ":" || table_schema || "." || table_name
FROM (
  SELECT
    table_catalog,
    table_schema,
    table_name
  FROM
    `project-id`.<dataset_id>.INFORMATION_SCHEMA.TABLES
  ORDER BY
    table_name ASC )

실행 방법:

$bash gen-default-schema.sh example.sql example

그러면 모든 JSON 스키마가 다음 위치에 배치됩니다../temp폴더

구글에서 이 작업을 수행하려면cloud-console 짧은 then then 후 then then 。SQL문의하다

에서 모든 수 스키마를 수 .을 사용하다STRUCT( ... )https://cloud.google.com/bigquery/docs/information-schema-column-field-paths#schema 를 참조해 주세요.

" " 를 사용합니다.INFORMATION_SCHEMA.<something>다른 뷰를 사용하여 다른 메타 정보를 JSON으로 가져옵니다.

에서 @ Hua가 것처럼 @Michel Hua를 합니다.Query results -> JSONSQL JSON 빅쿼리

SELECT table_name, ARRAY_AGG(STRUCT(column_name, data_type, description)) as columns
FROM `your-project-id`.your_dataset.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS 
WHERE table_name = 'your_table_name' 
GROUP BY table_name

언급URL : https://stackoverflow.com/questions/43195143/is-there-a-way-to-export-a-bigquery-tables-schema-as-json

반응형