Ch07_data_upload
Page content
공지
- 구글 빅쿼리 책 Chapter 4장 학습
- 참고 교재는 아래와 같다.
개요
- 로컬에서 데이터를 업로드 해본다.
데이터 다운로드
- 깃허브에서 데이터를 다운로드 받는다.
$ git clone https://github.com/onlybooks/bigquery.git
- ch04 폴더로 이동한 뒤, 실제 압축된 파일의 내용을 페이지 단위로 확인해본다.
- 먼저 ch04 폴더로 이동한다.
- zlees 명령으로 데이터를 확인해본다.
$ cd bigquery/ch04
$ zless college_scorecard.csv.gz
- 명령을 실행한 후 스페이스 이용하여 페이지 단위로 데이터 확인 후, 종료하려면 q키를 누른다.
- zless는 .gz과 같은 파일을 풀지 않고 Preview 형식으로 볼 수 있도록 도와준다.
bq 명령줄 도구
bq
에 대해 자세히 확인하려면 아래 싸이트에서 확인하기를 바란다.- bq 명령줄 도구는 빅쿼리 플랫폼상의 빅쿼리 서비스를 사용하기 위한 편리한 명령들 제공
$ bq --location=US mk ch04
Dataset 'biggquerysample:ch04' successfully created.
에러 상황 1.
- 다음과 같은 에러 메시지가 발견이 되면 프로젝트를 세팅해줘야 한다.
$ bq --location=US mk ch04
BigQuery error in mk operation: Not found: Project biggquerysample2
- 대개의 경우, project 세팅을 해줘야 한다.
$ gcloud config set project your_project_ID
데이터 로드
- 이제 데이터를 빅쿼리 내부의 테이블로 로드하는 명령을 수행해보자.
$ bq --location=US load --source_format=CSV --autodetect ch04.college_scorecard ./college_scorecard.csv.gz
Upload complete.
Waiting on bqjob_r1c47395bddea55ee_00000176e0b2548e_1 ... (37s) Current status: DONE
에러 상황
- 필자는 에러 상황이 발생하지는 않았다.
- 교재에서는 에러가 발생할 수도 있다고 하였다.
Could not parse 'NULL' as int for field HBCU (position 26) starting at location 11945910
-
위 문제는 데이터 상에 NULL값이 발생해서 생긴 값이다.
-
해결 방안은,
- 직접 데이터 수정 후, 재 로드
- NULL값이 있는 행은 Skip 하기
- 문자열 NULL값으로 재 표현하기.
-
bq load 명령을 활용해 테이블에 데이터를 추가한다.
$ bq --location=US \
> load --null_marker=NULL --replace \
> --source_format=CSV --autodetect \
> ch04.college_scorecard \
> ./college_scorecard.csv.
- 만약 기존의 테이블에 행을 추가하려면 –replace=false를 지정한다.
최종 확인
- 이제 SQL 코드를 입력한다.
Web UI
에서도 쿼리를 작성할 수 있지만, 터미널에서도 쿼리를 작성할 수 있다.
$ bq query --use_legacy_sql=false \
'SELECT
count(*)
FROM
`biggquerysample`.ch04.college_scorecard'
Waiting on bqjob_r2b7a30293847c4d_00000176e0cb1b23_1 ... (0s) Current status: DONE
+------+
| f0_ |
+------+
| 7175 |
+------+
- WEB UI에서도 확인이 가능하다.