파이썬에서 구글 빅쿼리로 데이터를 로드하는 방법

Tech 파이썬에서 구글 빅쿼리로 데이터를 로드하는 방법 대표 이미지

빅쿼리(BigQuery)는 구글의 강력한 분석형 데이터 웨어하우스로, 대용량 데이터를 빠르게 분석할 수 있는 기능을 제공합니다. 하지만 빅쿼리를 잘 활용하려면 데이터를 어떻게 효율적으로 업로드하느냐가 핵심입니다.

이번 포스트에서는 파이썬을 사용해 데이터를 Google BigQuery로 업로드하는 다양한 방법을 비교 분석합니다. 사용 목적, 데이터 크기, 자동화 요구사항에 따라 어떤 방식을 선택해야 할지 감 잡을 수 있을 겁니다.

1. Pandas + to_gbq()

파이썬에서 데이터를 다룰때 많이 사용하는 모듈인 pandas를 사용할 경우, pandas_gbq 모듈을 사용하여 데이터프레임을 쉽게 구글 빅쿼리로 로드할 수 있습니다. 방법은 아래와 같습니다.

📦 설치

pip install pandas-gbq

🔧 사용 예시

from pandas_gbq import to_gbq

import pandas as pd

df: pd.DataFrame

to_gbq(

    df,

    destination_table=“project.dataset.table”,

    project_id=“project_id”,

    if_exists=“replace”, # fail | replace | append

    table_schema={“column”, “dtype”}, # 테이블 스키마 명시, 기본 데이터프레임 컬럼 타입에 따라 자동 생성

    chunksize=1000, # 로드 청크사이즈, 데이터가 클 경우 나눌 청크 크기를 설정

)

2. google-cloud-bigquery 클라이언트 라이브러리

 

📦 설치

pip install google-cloud-bigquery

🔧 사용 예시: DataFrame 직접 업로드

from google.cloud import bigquery

import pandas as pd

df: pd.DataFrame

client = bigquery.Client()

job = client.load_table_from_dataframe(df, “project.dataset.table”)

job.result()

🔧 사용 예시: 파일에서 직접 업로드

from google.cloud import bigquery

client = bigquery.Client()

job_config = bigquery.LoadJobConfig(source_format=bigquery.SourceFormat.CSV)

with open(“data.csv”, “rb”) as f:

    client.load_table_from_file(f, “project.dataset.table”, job_config=job_config).result()

👍 장점

  • 다양한 데이터 소스 지원 (DataFrame, CSV, JSON, GCS 등)

  • 세부 설정 가능: 파티셔닝, 스키마 지정 등

👎 단점

  • 코드 복잡

  • 설정 많음

위 소개드린 두 방법 외에 client 인스턴스 내 여러 메소드및 옵션이 더 있습니다.

공식 구글 빅쿼리 SDK의 경우 설정이 복잡하고 많은 만큼 세세한 조정이 가능합니다.

복잡한 데이터 로드 워크플로에서 사용하기 좋습니다.

3. GCS → BigQuery 로딩

 

📦 설치

pip install google-cloud-storage google-cloud-bigquery

🔧 사용 예시

from google.cloud import storage, bigquery

# 1. GCS에 데이터 업로드

storage_client = storage.Client()

bucket = storage_client.bucket(“bucket”)

blob = bucket.blob(“data.csv”)

blob.upload_from_filename(“data.csv”)

# 2. GCS 데이터를 빅쿼리로 로드

bq_client = bigquery.Client()

job_config = bigquery.LoadJobConfig(

    source_format=bigquery.SourceFormat.CSV,

    autodetect=True

)

job = bq_client.load_table_from_uri(

    “gs://bucket/data.csv”,

    “project.dataset.table”,

    job_config=job_config

)

job.result()

👍 장점

  • 대용량 데이터 처리에 적합

  • 실패 시 재시도 용이

  • 데이터 스테이징 가능

👎 단점

  • GCS 버킷 설정 필요

  • 코드 길고 번거로움

데이터가 아주 큰 대용량 데이터의 경우 파일로 저장한 후 GCS에 업로드 하여 업로드한 데이터 파일을 구글 빅쿼리로 로드하는 방법이 안정적입니다.

위 2번 방식과 마찬가지로 JobConfig를 통해 로드 상세 설정이 가능하며 그에 더해 안정성을 확보한 방식입니다.

파이썬에서 데이터를 구글 빅쿼리로 로드하는 세 가지 방식에 대해 알아보았습니다,

어떤 방식을 사용할 지는 데이터의 크기나 파티셔닝, 스키마의 상세 지정의 필요 유무에 따라 알맞은 방식을 선택할 수 있겠습니다.

Popular & Related Posts

Airflow Dynamic Task Mapping으로 동적 태스크 실행하기 배너 이미지

by

2025-07-29

Airflow의 Dynamic Task Mapping으로 동적 태스크 실행하기

Airflow에서 특정 태스크 개수가 동적으로 실행되어야 할때, Airflow Dynamic Task Mapping을 사용할 수 있습니다.

Tech

Apache Airflow 2.10.0 새로운 기능 Hybrid Executor 블로그 배너 이미지

by

2025-03-28

Apache Airflow 2.10.0 새로운 기능 Hybrid Executor

Apache Airflow 2.10.0 버전에 새로 생긴 Hybrid Executor 기능 살펴보기

Tech

Tech 파이썬에서 구글 빅쿼리로 데이터를 로드하는 방법 대표 이미지

by

2025-07-29

파이썬에서 구글 빅쿼리로 데이터를 로드하는 방법

파이썬 환경에서 여러가지 라이브러리를 활용하여 구글 빅쿼리로 데이터를 전송하는 여러가지 방법

Tech