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
반응형
'프로그래밍 > Python' 카테고리의 다른 글
pyinstaller 용량 줄이기(순정 Python) (0) | 2022.08.17 |
---|---|
[GCP]Bigquery로 Dataframe전달할때 GenericGBQException 에러해결하기 (0) | 2022.08.10 |
[python(파이썬)]dataframe 호출시 na 살리기 (0) | 2022.07.22 |
[python(파이썬)]dataframe 특정 컬럼의 값만 바꾸기(replace specific columns) (0) | 2022.07.22 |
[python(파이썬)]비속어 제거하기(better-profanity) (0) | 2022.06.27 |