[Data Engineering] BigQuery 데이터 적재

가을·2026년 3월 4일

사이드 프로젝트 진행 중 Big Query에 데이터를 적재하며 CSV로 적재하는 방법에 대해 정리해봄

1. Dataset 생성

BigQuery 콘솔 → 프로젝트 선택 → → Create dataset

  • Dataset ID: raw, dim, fact, mart 등 레이어 단위로 생성

2. 테이블 생성 (CSV 업로드)

Dataset 클릭 → Create table

Source 설정

  • Create table from: Upload
  • File format: CSV
  • Encoding: UTF-8

Destination 설정

  • Project: 현재 프로젝트
  • Dataset: 예) raw
  • Table name: 예) raw_food_nutrition

Schema 설정

  • Auto detect or Edit as text (직접 스키마 정의)

예:

fd_cd STRING
fd_nm STRING
ener_kcal FLOAT64
etl_lod_dt TIMESTAMP

(참고) CSV 업로드 시 유의사항

  • 컬럼명은 영문으로 변경 한글 or 특수문자 X
  • UTF-8 인코딩으로 저장
df.to_csv("file.csv", index=False, encoding="utf-8-sig")

(참고) NOT NULL / NULLABLE 설정

BigQuery는:

모드의미
NULLABLENULL 허용
REQUIREDNOT NULL
  • NULLABLE → REQUIRED 변경 시 기존 데이터에 NULL 있으면 변경 불가
  • REQUIRED → NULLABLE 변경 불가 새 테이블 생성 필요 (테이블 생성 시 설정도, 생성 후 쿼리로도 NOT NULL 설정이 안됨→방법 찾으면 도와줘..)
ALTER TABLE raw.dim_food
ALTER COLUMN fd_cd SET NOT NULL;

(참고) PK 설정 관련

  • BigQuery는 전통적 RDBMS와 다름
  • Primary Key 선언은 가능하지만 중복 강제 X, 무결성 강제 X → 실제 중복 검증은 ETL에서 관리 예: dim_food에서 fd_cd를 PK로 선언
    CREATE TABLE dim.dim_food (
      fd_cd STRING NOT NULL,
      fd_nm STRING
    )PRIMARY KEY(fd_cd) NOT ENFORCED;
    예: 이미 만든 테이블에 PK 추가
    ALTER TABLE raw.raw_food_nutrition ADD PRIMARY KEY(fd_cd) NOT ENFORCED;
    예: 중복 검증
    SELECT fd_cd, COUNT(*) 
    FROM dim_food 
    GROUP BY fd_cd 
    HAVING COUNT(*)>1;

0개의 댓글