BigQuery 데이터 입출력 From Local TO BigQuery

Page content

개요

  • 서비스 계정 추가 후, 데이터 업로드

GCP 서비스 계정 추가

  • IAM 및 관리자 > 서비스 계정 > 서비스 계정 만들기 선택

image.png

  • 서비스 계정 이름은 각자 정한다. 필자는 lgu6th-bq-loader로 명명했다.
  • 서비스계정 ID는 이메일 주소 ID를 사용한다.
  • 만들고 계속하기 버튼을 클릭한다.

image.png

  • 권한을 부여한다. BigQuery 관리자를 선택한다.
  • 그 후 계속 버튼을 클릭한다.

image.png

  • 그 후 완료 버튼을 클릭한다.

image.png

서비스 키 다운로드

  • 다음과 같은 화면에서 키 관리 버튼을 클릭한다.

image.png

  • 다음과 같은 화면에서 키 추가 버튼을 클릭한다.
  • 그 후 새 키 만들기 버튼을 클릭한다.

image.png

  • JSON 선택 후 만들기 버튼 누른 후 프로젝트 경로에 추가한다.

샘플코드

  • 샘플코드는 다음과 같다.
  • 업로드 하는 방식은 다양하게 존재하기 때문에 다양한 튜토리얼을 확인한다.
    • google-cloud-bigquery 라이브러리 활용 방식
    • pandas-gbq 라이브러리 활용 방식
from google.cloud import bigquery
import os

# 서비스 계정 키 파일 경로 설정
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "C:/Users/Admin/Desktop/your/project/your-project-09e19171e4dd.json"

# BigQuery 클라이언트 생성
client = bigquery.Client()

# 테이블 지정
project_id = "your-project"  # 실제 GCP 프로젝트 ID로 바꾸기
dataset_id = "your_dataset"     # BigQuery 데이터셋 이름
table_id = "iris_from_local"         # 업로드할 테이블 이름

table_ref = f"{project_id}.{dataset_id}.{table_id}"
file_path = "C:/Users/Admin/Desktop/de_basic/gcp_tutorial/iris.csv"  # 업로드할 로컬 파일 경로

# 업로드 설정
job_config = bigquery.LoadJobConfig(
    source_format=bigquery.SourceFormat.CSV,
    skip_leading_rows=1,
    autodetect=True
)

# 데이터 업로드
with open(file_path, "rb") as source_file:
    load_job = client.load_table_from_file(source_file, table_ref, job_config=job_config)

print("업로드 중...")
load_job.result()  # 완료될 때까지 대기
print("업로드 완료!")

# 업로드 결과 출력
destination_table = client.get_table(table_ref)
print(f"{destination_table.num_rows} rows loaded to {table_ref}")