본문 바로가기
프로그래밍/Python

[GCP]Bigquery로 데이터 전송하기(Dataframe / Python / pandas_gbq)

by Mr.noobiest 2022. 8. 10.

Google Cloud Platfrom에는 여러가지 기능이 있는데, Cloud Storage와 같은 저장소도 있고, SQL도 여러가지 종류를 사용가능하며,

Cloud Bigquery와 같이 빅데이터도 저장 및 호출이 가능합니다.

 

만약 Bigquery로 엑셀 데이터(csv/xlsx)를 전송하고 싶을때 Python을 사용하여  전송해보자

 

 


 

1) 우선 엑셀 파일을 먼저 불러온다.

import panas as pd

Data_df = pd.read_csv('test.csv',index_col=0)

 


 

2) GCP의 Bigquery로 가면 아래와 같이 프로젝트명 > 데이터세트명>데이터 테이블 명으로 구분되어 있다.


 

3)  1)의 컬럼명/컬럼형에 맞게 테이블을 생성해준다.


 

4) [IAM 및 관리자] >  [서비스 계정]에 가서 Credentials JSON파일을 발급 받도록 한다.

오브젝트명 - 고유키  .JSON 파일로 다운가능하다.

 


5) 이후 코드는 아래와 같이 사용한다.

from google.cloud import storage
import io
from google.oauth2 import service_account
import pandas_gbq
import os
import pandas as pd
dataframe=pd.read_csv('엑셀파일.csv', index_col = 0)        #데이터 호출 

# Credentials JSON파일은 [IAM 및 관리자] -> [서비스 계정] 에서 발급 가능하다.
cd = service_account.Credentials.from_service_account_file("발급받은 JSON파일 .json",)


project_id = '프로젝트ID'    #프로젝트의 ID /프로젝트명이 아니다 주의할것
#destination_table = '데이터세트명.데이터 테이블명'
destination_table = '데이터셋명.테이블명'                          #--------------------------------------------Dataset.Table 경로

#append모드 / replace모드 / fail<-오류 반환 모드
dataframe.to_gbq(destination_table,project_id,
                 if_exists='append',
                 credentials=cd)                         

print('migration complete')

 

 

 

이렇게 하면 본인이 작성한 엑셀 파일을 Dataframe형태로 전처리하고 전처리가 완료된 Dataframe데이터를 Bigquery로 전송이 가능하다,

위  코드를 실행할때 에러가 뜬다면 아래 순서로 조치하라

 

1) JSON파일이 정상적인지 확인

2) 입력되는 데이터의 형태/명칭과 Bigquery에 생성된 데이터 테이블과 동일한지 확인하라.

3) Bigquery의 테이블이 Nullable인지 아닌지   체크하라.

 

 

끝.

728x90
반응형