데이터베이스/데이터베이스

[Bigquery] GCS를 활용한 대용량 쿼리 데이터 다운로드

sseozytank 2023. 11. 28.

빅쿼리 내에 결과 저장을 통한 csv (로컬 파일) 다운로드는 최대 10mb 까지 가능하다.

 

그런데, 다른 팀에서 약 1GB가 넘는 raw 데이터를 보내달라고한다... 퇴근해야하는데.. 어떡하지?  

Google Drive로 보낸다면 1GB까지 저장이 가능하지만, 이걸로 커버쳐지지 않는다. 

bigquery 데이터 다운로드 옵션

 

 

이럴 때, GCS 버킷을 활용해서 데이터를 저장하면 된다. (우리 짱 멋진 팀장님이 알려주셨다.)  

https://cloud.google.com/bigquery/docs/exporting-data?hl=ko

 

 

0.데이터를 내보내는 권한 필요 

| BigQuery 테이블에서 데이터를 내보내는 권한

BigQuery 테이블에서 데이터를 내보내려면 bigquery.tables.export IAM 권한이 필요합니다.

사전 정의된 다음 각 IAM 역할에는 bigquery.tables.export 권한이 포함되어 있습니다.

  • roles/bigquery.dataViewer
  • roles/bigquery.dataOwner
  • roles/bigquery.dataEditor
  • roles/bigquery.admin

| 내보내기 작업을 실행할 수 있는 권한

내보내기 작업을 실행하려면 bigquery.jobs.create IAM 권한이 필요합니다.

다음과 같은 사전 정의된 각 IAM 역할에는 내보내기 작업을 실행하는 데 필요한 권한이 포함되어 있습니다.

  • roles/bigquery.user
  • roles/bigquery.jobUser
  • roles/bigquery.admin

| 데이터를 Cloud Storage 버킷에 쓸 수 있는 권한

데이터를 기존 Cloud Storage 버킷에 쓰려면 다음과 같은 IAM 권한이 필요합니다.

  • storage.objects.create
  • storage.objects.delete

다음과 같은 사전 정의된 각 IAM 역할에는 기존 Cloud Storage 버킷에 데이터를 쓰는 데 필요한 권한이 포함되어 있습니다.

  • roles/storage.objectAdmin
  • roles/storage.admin

참고해서, 권한을 설정해주도록 한다. 

 

1.데이터를 GCS로 EXPORT 

EXPORT DATA
  OPTIONS (
    uri = 'gs://버킷 이름/*.csv', --여기가 제일 중요하다, 반드시 와일드카드를 사용해주어야함
    format = 'CSV',
    overwrite = true,
    header = true)
AS (
   -- INSERT QUERY
);

 

지원 포맷은 아래와 같이 참고 

 

2.GCS에 접속하여 파일 다운로드

대용량 데이터는 GCS로 저장되면서 알아서 분할된다.  

 

 

끝..!!!!!????? 이긴 하다. 그런데, 이렇게 window 기준 GCS에서 csv를 다운 받으니 한글이 깨져서 나온다. 이럴 때 인코딩 변환이 필요하다. (mac은 잘 모르겠다..)

 

3.csv 한글 깨짐 방지 인코딩

방법은 여러가지다. GUI 프로그램을 이용해도 되고 파워셀을 써도 되고 등등...

여기에는 제일 쉬운 방법을 적어놨다.아래 블로그를 참고하면 해당 작업을 반복적으로 했을 때 좀 더 수월해지는 방법들이 적혀져 있으니 참고하면 된다! 

 

https://jjangfree.tistory.com/2168  

 

1) 다운로드 파일 오른쪽 마우스 -> 연결 프로그램 -> 메모장

2) 파일 -> 다른 이름으로 저장 -> 인코딩을 ANSI로 변경한 후 파일 이름을 파일명.csv로 변경 

 

댓글