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 릴리즈 노트
- bq UI에서 테이블을 선택합니다.
- 스키마를 내보낼 열을 선택합니다.
- 복사 메뉴를 사용하여 스키마를 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일 현재, 이는 다음과 같이 작동했습니다.
- 구글 클라우드에서 클라우드 쉘로 이동합니다.
- 클라우드 셸의 드롭다운(왼쪽)에서 프로젝트를 선택합니다.
- 다음 명령어 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
'source' 카테고리의 다른 글
| 2개의 데이터 소스를 Flyway와 연계하여 스프링 부트에서 HikariCP를 사용하는 방법 (0) | 2023.04.02 |
|---|---|
| 컨트롤러에서 AngularJS 모달 대화 상자 양식 개체가 정의되지 않았습니다. (0) | 2023.04.02 |
| Node.js에서 발신된 모든 이벤트 듣기 (0) | 2023.04.02 |
| PHP가 JSON을 JQUERY AJAX 호출로 반환 (0) | 2023.03.28 |
| JSON 스키마에 선언된 속성만 허용 (0) | 2023.03.28 |
