1)개요
Windows Server의 Oracle DB와 연결해서 Ubuntu 환경에서 embulk로 데이터를 읽어와 bigQuery로 이관하는 작업을 시작해보겠습니다.
oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - VM : thewayitwas.tistory.com/432

 

oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - VM구성

1) 개요 Windows Server에 Oracle DB를 설치하고 Linux Server에 Instant Oracle Client 를 사용해 서로 연결해 둔 다음 embulk를 활용해 Windows Server의 Oracle DB의 데이터를 bigQuery로 이관하는 작업입니다...

thewayitwas.tistory.com

oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - Oracle : thewayitwas.tistory.com/433

 

oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - Oracle

1)개요 이 전편에 이어서 Windows Server에 Oracle DB를 설치하고 Ubuntu에 Oracle Instant Client를 설치해서 서로 연결해보도록 하겠습니다. (쿼리 조회로 확인해 보겠습니다.) 2)Windows Oracle Server www.ora..

thewayitwas.tistory.com

 

2)embulk 특징
⇢ 데이터를 전송하는 오픈 소스 대량 데이터 로더 입니다. ETL에서 Transformation 외에 Extraction, Loading 에서 여러 plug-in을 제공하고 있습니다. 

  • Input file format을 자동으로 인식
  • 병렬, 분산 수행 가능
  • Transaction Control
  • Resuming
  • RubyGem 기반

출처 : https://www.kangtaeho.com/61


3)embulk & plug-in 설치

$ sudo apt install default-jre
$ curl --create-dirs -o ~/.embulk/bin/embulk -L "https://dl.embulk.org/embulk-latest.jar"
$ chmod +x ~/.embulk/bin/embulk
$ echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc

$ embulk gem install embulk-input-oracle
$ embulk gem install embulk-output-bigquery

3)VM 권한 설정
service account를 생성해서 JSON으로 GOOGLE_CLOUD_CREDENTIAL 환경설정을 해도 되지만 roles/compute.admin 권한을 주게 되면 모든 Compute Engine 리소스를 관리할 수 있는 전체 권한을 부여받을 수 있습니다. IAM에 해당 계정 메일에다 compute.admin 계정을 주시면 됩니다. 

4)yml 파일 구성
.yml 파일의 설정값을 구성할 때 ojdbc, p12_keyfile 등 GCS에 업로드 한 뒤 gsutil cp [bucket위치] [옮길 ubuntu 경로] 를 적어줘서 옮기면 됩니다. 

$ touch config.yml 

in:
 type: oracle
 driver_path: /home/gscloud94/ojdbc8.jar
 host: 34.64.254.253
 port : "1521"
 user: h2
 password: "1234"
 database: XE
 query : | SELECT * FROM hr.departments

out:
 type: bigquery
 mode: replace
 auth_method : json_key
 json_keyfile : [ json_keyfile 경로를 적어줍니다. ]
 service_account_email : [bigQuery에 접근하기 위해 IAM>service account 에서 생성한 service_account 등록(단, bigQuery admin권한 설정이 완료된 상태)]
 p12_keyfile: [위의 service_account_email key를 p12 형식으로 다운받아 경로를 기입해줍니다.]
 project: [현재 수행중인 프로젝트 위치]
 dataset: a_test
 location : asia-northeast3
 table: TEST_DB
 auto_create_table: true
 auto_create_dataset: true
 ignore_unknown_values: true
 allow_quoted_newlines: true
 open_timeout_sec : 7200
 send_timeout_sec : 7200
 read_timeout_sec : 7200

$embulk run ora_bq_test.yml 

5)bigQuery 적재


**오류

ORA-01882: timezone region not found 
해결방법
- java -jar ojdbc8.jar configure -Doracle.jdbc.timezoneAsRegion=false 로 해결이 안된다면
- timedatectl 로 현재 timezone이 KST, UST인지 확인해봅니다. UST인 경우 sudo timedatectl set-timezone Asia/Seoul 로 KST로 변경하여 문제를 해결하였습니다. 

oracle plug-in
github.com/embulk/embulk-input-jdbc/tree/master/embulk-input-oracle 

 

embulk/embulk-input-jdbc

MySQL, PostgreSQL, Redshift and generic JDBC input plugins for Embulk - embulk/embulk-input-jdbc

github.com

.yml file example 
github.com/hiroyuki-sato/embulk-support/blob/master/input-jdbc_202-pg_test/conf.yml.liquid

 

hiroyuki-sato/embulk-support

Contribute to hiroyuki-sato/embulk-support development by creating an account on GitHub.

github.com