BigQuery로 GCS csv 파일을 날짜별 샤드 테이블로 대량 가져오기하는 방법
※동일한 컬럼을 가지지만, 날짜별로 파일이 분할되어 있다
파티셔닝과 샤딩의 차이점은 Google 공식 문서을 참조하십시오.
전제
Google Cloud SDK 설치됨
준비
GCS로 BigQuery로 가져올 CSV 저장
다음 구성에서 GCS로 BigQuery로 가져올 csv를 저장합니다.
파일명의 "_"이후가 샤드화 되는 날짜가 됩니다.
bucket
└── dir
├── test_20200101.csv
├── test_20200102.csv
├── test_20200103.csv
…
└── test_20200131.csv
스크립팅
GCS에서 BigQuery로 가져오기 위한 스크립트를 작성합니다.
로컬에 다음 파일 레이아웃을 준비합니다.
로컬 파일 레이아웃dir
├── .env
└── import_bq_from_gcs.sh
설정 파일
.env# プロジェクトID
PROJECT_ID=********
# BQにインポートしたいcsvを格納しているパス
GCS_PATH=gs://bucket/test_bq_1
# インポート先データセット名
DATA_SET=test_bq
# インポート先テーブル名(prefix)
TABLE_PREFIX=table
가져오기 스크립트
GCS에서 가져올 csv마다 BigQuery로 가져옵니다.
import_bq_from_gcs.sh#!/bin/sh
set -e
# 環境変数
. .env
# プロジェクトIDを設定
gcloud config set project ${PROJECT_ID}
echo "set PROJECT_ID"
# 指定したGCSパス配下のファイルごとに処理
for file_full_path in `gsutil ls ${GCS_PATH}`
do
# ファイルパス抽出
file_path=${file_full_path##*/}
# ファイル名抽出
file_name=${file_path%.*}
# ファイル名suffix('_'以降)抽出
file_suffix=${file_name##*_}
table_name=${DATA_SET}.${TABLE_PREFIX}_${file_suffix}
# ファイル名が存在
if [ ${#file_name} -gt 0 ]; then
bq load --autodetect --source_format=CSV ${table_name} ${file_full_path}
echo "import from ${file_full_path} to ${table_name}"
fi
done
GCS에서 BigQuery로 가져오기
준비가 완료되면 .env
및 import_bq_from_gcs.sh
와 동일한 디렉토리에서 다음을 수행합니다.
sh sh:import_bq_from_gcs.sh
실행 후 BigQuery 콘솔을 확인하면 날짜별 샤드 테이블로 가져올 수 있는지 확인할 수있었습니다!
Reference
이 문제에 관하여(BigQuery로 GCS csv 파일을 날짜별 샤드 테이블로 대량 가져오기하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yolo_kiyoshi/items/40b4fb754391d57454bd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
bucket
└── dir
├── test_20200101.csv
├── test_20200102.csv
├── test_20200103.csv
…
└── test_20200131.csv
dir
├── .env
└── import_bq_from_gcs.sh
# プロジェクトID
PROJECT_ID=********
# BQにインポートしたいcsvを格納しているパス
GCS_PATH=gs://bucket/test_bq_1
# インポート先データセット名
DATA_SET=test_bq
# インポート先テーブル名(prefix)
TABLE_PREFIX=table
#!/bin/sh
set -e
# 環境変数
. .env
# プロジェクトIDを設定
gcloud config set project ${PROJECT_ID}
echo "set PROJECT_ID"
# 指定したGCSパス配下のファイルごとに処理
for file_full_path in `gsutil ls ${GCS_PATH}`
do
# ファイルパス抽出
file_path=${file_full_path##*/}
# ファイル名抽出
file_name=${file_path%.*}
# ファイル名suffix('_'以降)抽出
file_suffix=${file_name##*_}
table_name=${DATA_SET}.${TABLE_PREFIX}_${file_suffix}
# ファイル名が存在
if [ ${#file_name} -gt 0 ]; then
bq load --autodetect --source_format=CSV ${table_name} ${file_full_path}
echo "import from ${file_full_path} to ${table_name}"
fi
done
준비가 완료되면
.env
및 import_bq_from_gcs.sh
와 동일한 디렉토리에서 다음을 수행합니다.sh sh:import_bq_from_gcs.sh
실행 후 BigQuery 콘솔을 확인하면 날짜별 샤드 테이블로 가져올 수 있는지 확인할 수있었습니다!
Reference
이 문제에 관하여(BigQuery로 GCS csv 파일을 날짜별 샤드 테이블로 대량 가져오기하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yolo_kiyoshi/items/40b4fb754391d57454bd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)