저는 주로 PostgreSQL, Greenplum database를 사용해서 작업을 할 때 DBeaver SQL IDE 를 사용하곤 합니다. 전에는 PGAdmin도 많이 썼는데요, 요즘에는 DBeaver를 주로 사용하네요. 

 

고객사에 가서 프로젝트를 하게 되면 노트북에 분석에 사용하는 툴들을 설치해서 들어가게 되고, 프로젝트 종료 후에는 고객사의 보안 규정에 따라 노트북을 반출할 때는 포맷을 하게 됩니다. 이렇다 보니 포맷 후에 다시 처음부터 분석에 필요한 툴들을 새로 설치하고, 설정도 매번 새로 해줘야합니다. 

 

이럴 때마다 매번 DBeaver 에서 설정 확인하고 조정해주는 것들에 대한 소소한 팁들 정리해보았습니다. 

 

1. DBeaver 테마 설정

2. DBeaver 폰트 유형 및 폰트 크기 설정

3. DBeaver 대문자로 자동 바꿔주기 설정

4. DBeaver 행번호 표시 설정

 

 

 

1. DBeaver 테마 설정

 

DBeaver 는 편집기의 전체 Theme으로 Classic, Dark, Light, System 의 4가지를 제공합니다.  아래의 경로대로 찾아가서 각각 클릭해서 '적용'해본 후에, 본인이 가장 좋아하는 Theme으로 설정하면 됩니다.  (저는 'Light' (default) Theme이 가장 깔끔해서 기본 설정 그대로 사용하곤 합니다.)

 

 

윈도우(W) > User Interface > 모양 > Enable theming >  테마(T) > [Classic, Dark, Light, System] > Apply and Close

 

DBeaver : 윈도우(W) > 설정

 

 

DBeaver : User Interface > 모양 > 테마(T)

 

 

 

2. DBeaver 글꼴 유형(폰트 타입) 및 글꼴 크기(폰트 사이즈) 설정

 

DBeaver 새로 설치하고 나면, 매번 폰트 유형은 Arial로, 폰트 크기를 14로 키워서 사용하는 편입니다. 그런데 텍스트 글꼴 설정하는 메뉴 위치 찾기가 쉽지 않습니다. 그래서 자주 구글링을 하는 편이지요. 나중에 제가 폰트 설정하는 메뉴가 어디에 숨어있는지 참고하려고 이번 포스팅 쓰는 거랍니다. ^^;

 

윈도우(W) > User Interface > 모양 > 색상 및 글꼴 > 기본 > 텍스트 글꼴 > 편집 > Collection, Family, Typeface, Size 설정 > Apply and Close

 

DBeaver: User Interface > Font setting > Edit

 

 

Collection 에서  "All Fonts" 선택하고, Family에서 원하는 글꼴(폰트)를 선택합니다. 저는 무난하게 "Arial"을 선택했습니다. Typeface 에서 [일반체, 이탤릭체, 볼드체, 볼드 이탤릭체] 중에서 선택을 하고, 글꼴 크기 (폰트 사이즈)를 설정해주면 됩니다.  이렇게 설정을 다 해주고 나면 앞의 화면의 제일 밑에 있는 "Apply and Close"를 클릭해주면 설정이 적용됩니다. 

 

 

 

 

3. DBeaver SQL Keyword 를 대문자로 자동으로 바꿔주기 설정

 

개인마다 각자 취향이 있겠습니다만, 저는 SQL Query 구문의 가독성을 좋게 하는데 도움이 되기 때문에 SQL Keyword 문을 대문자로 하고, 그 외 테이블이나 칼럼 이름은 소문자로 구분해서 사용하곤 합니다. 그런데 이렇게 대문자와 소문자를 매번 SQL query문을 쓸 때마다 수동으로 키보드에서 CapsLock 키를 눌러가면서 바꿔줘야 한다면 상당히 번거롭습니다.  이때 SQL Keyword 구문을 자동으로 대문자로 바꿔주는 설정이 있다면 정말 편하겠지요?!

 

윈도우(W) > 편집기 > SQL 편집기 > SQL 포맷 > Keyword case > [Default, Upper, Lower, Mixed] > Apply and Close

 

DBeaver: Editor > SQL Editor > SQL format > Keyword case > Upper

 

 

 

4. DBeaver 행번호 표시 설정

 

DBeaver 의  SQL 편집기에서 행 번호를 표시하면 SQL Query가 길어졌을 때 디버깅하기에 편리하기 때문에 행번호 표시를 활성화해서 사용하곤 합니다. 

 

윈도우(W) > 편집기 > 문서 편집기 > 행 번호 표시(B) check > Apply and Close

 

DBeaver : Editor > Document Editor > Line Number

 

"행 번호 표시"를 활성화하면 아래처럼 SQL 편집기의  Script 창의 왼쪽에 "행 번호 (line nubmer)"가 표시됩니다. 

DBeaver : Line Number

 

 

이번 포스팅이 많은 도움이 되었기를 바랍니다. 

행복한 데이터 과학자 되세요! :-)

 

728x90
반응형
Posted by Rfriend
,

이번 포스팅에서는 Greenplum Database, Postgresql Database에 사용할 수 있는 오픈소스 Database Tool인 DBeaver 설치, 사용법을 소개하겠습니다. 

그동안 PostgreSQL tool인 pgAdmin4 를 썼는데요, DBeaver가 더 나은 것 같아서 갈아 탔습니다. 

DBeaver는 PostgreSQL, Greenplum DB 외에도 MySQL, MariaDB, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Derby 등의 Database에도 사용할 수 있으므로 활용도가 매우 높습니다. 물론 오픈소스니깐 공짜로 그냥 설치해서 사용하면 됩니다. 

* 출처: https://dbeaver.io/


  1, Mac OSX 에 DBeaver Community Edition (ver 5.3.5) 설치하기

저는 Brew 를 이용해서 설치했습니다. 

1. 터미널을 엽니다. 

2. Brew 가 설치되어 있지 않으면 아래의 스크립트를 그대로 실행시키고, 맥북의 비밀번호를 입력해주세요. 만약 Brew 를 이미 설치하셨다면 2번은 건너뛰고 3번만 실행시키면 됩니다.

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null ; brew install caskroom/cask/brew-cask 2> /dev/null 

3. 터미널 창에 brew cask install dbeaver-community  를 실행합니다. 

MacBook-Pro:~ user$ brew cask install dbeaver-community

Updating Homebrew...

==> Auto-updated Homebrew!

Updated 1 tap (homebrew/core).

==> New Formulae

cafeobj                 gnunet                  homeassistant-cli       re-flex                 sd                      v2ray-plugin

gloo-ctl                h3                      i386-elf-grub           riff                    serve

==> Updated Formulae

git                               cdogs-sdl                           gcc                                 nwchem

kubernetes-helm                   cfengine                            gdk-pixbuf                          odpi

pcre                               cflow                               geckodriver                         offlineimap

abcde                               cfr-decompiler                      gecode                              ohcount

abcmidi                             cglm                                geocode-glib                        openssl@1.1

activemq-cpp                        chakra                              gerbil-scheme                       paket

aescrypt-packetizer                 check_postgres                      get_iplayer                         pandoc

afflib                              checkstyle                          git-lfs                             pandoc-citeproc

afio                                chkrootkit                          gitlab-runner                       parallel

agedu                               cli53                               glslang                             passenger

algernon                            click                               gnu-tar                             pdftoedn

amqp-cpp                            closure-compiler                    go                                  petsc

angular-cli                         cmark-gfm                           godep                               petsc-complex

annie                               cocoapods                           golang-migrate                      pgweb

ansible                             cointop                             gomplate                            phoronix-test-suite

apache-arrow                        collector-sidecar                   goreleaser                          php@7.1

apache-arrow-glib                   commandbox                          grafana                             picard-tools

apache-flink                        conan                               grpc                                planck

app-engine-java                     configen                            gwyddion                            plank

apt-dater                           confluent-oss                       gx                                  pmd

arangodb                            consul-template                     gx-go                               ponyc

aravis                              convox                              handbrake                           pre-commit

arm-linux-gnueabihf-binutils        coturn                              helmfile                            presto

armadillo                           couchdb                             hub                                 primesieve

arpack                              cpprestsdk                          i386-elf-binutils                   prometheus

artifactory                         cproto                              ibex                                protobuf

asciidoctorj                        crc32c                              imagemagick                         protobuf-c

asio                                cryptominisat                       ipfs                                protobuf-swift

ask-cli                             cryptopp                            jdupes                              protoc-gen-go

atkmm                               cscope                              jenkins                             pulumi

ats2-postiats                       csfml                               jhipster                            redis@4.0

auditbeat                           cython                              joplin                              rhash

aurora                              czmq                                kibana@5.6                          rust

autogen                             darcs                               kitchen-sync                        sbcl

avfs                                dartsim                             kompose                             sfml

aws-sdk-cpp                         davix                               kops                                shadowsocks-libev

awscli                              dcd                                 kube-ps1                            shellz

axel                                ddrescue                            kubeprod                            ship

azure-cli                           deark                               kubernetes-cli                      siege

azure-storage-cpp                   debianutils                         kustomize                           simutrans

babeld                              deja-gnu                            lcov                                singular

babl                                deployer                            ldc                                 skaffold

backupninja                         dhex                                lean-cli                            sn0int

bacula-fd                           dialog                              leiningen                           solr

balena-cli                          diffoscope                          libgweather                         spotbugs

batik                               diffstat                            libheif                             sqlmap

bazel                               digdag                              libphonenumber                      step

bee                                 dita-ot                             libpulsar                           supersonic

befunge93                           django-completion                   libqalculate                        svgo

bettercap                           docfx                               librealsense                        swagger-codegen

bgpstream                           docker                              libsecret                           swagger-codegen@2

bibtexconv                          docker-completion                   libtensorflow                       swiftformat

bigloo                              dovecot                             libxlsxwriter                       swiftlint

binaryen                            dpkg                                linkerd                             terragrunt

bind                                draco                               liquibase                           tgui

bindfs                              dscanner                            lmod                                thors-serializer

bit                                 dub                                 logtalk                             tippecanoe

blastem                             duck                                lzlib                               tmux-xpanes

bluetoothconnector                  dwdiff                              maxwell                             topgrade

bmake                               dwm                                 mesa                                typescript

boxes                               dyld-headers                        metricbeat                          unrar

brew-php-switcher                   dynamips                            minio-mc                            vagrant-completion

bro                                 eccodes                             mkl-dnn                             vault

buildifier                          elasticsearch                       mosh                                wabt

burp                                elasticsearch@5.6                   mosquitto                           wtf

bwm-ng                              elektra                             mysql@5.6                           xmrig

bzt                                 emscripten                          ncompress                           xtensor

c-blosc                             erlang@20                           nginx                               yara

caffe                               eslint                              nifi                                ydcv

calabash                            exploitdb                           node                                yle-dl

calcurse                            fabio                               node-build                          you-get

calicoctl                           flake8                              node@10                             youtube-dl

carrot2                             fn                                  node@6                              zbackup

cassandra@2.1                       frugal                              node@8

cassandra@2.2                       fx                                  ntopng

cdk                                 gambit-scheme                       numpy


==> Tapping homebrew/cask

Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask'...

remote: Enumerating objects: 4086, done.

remote: Counting objects: 100% (4086/4086), done.

remote: Compressing objects: 100% (4075/4075), done.

remote: Total 4086 (delta 24), reused 442 (delta 8), pack-reused 0

Receiving objects: 100% (4086/4086), 1.31 MiB | 593.00 KiB/s, done.

Resolving deltas: 100% (24/24), done.

Tapped 1 command and 3985 casks (4,093 files, 4.2MB).

==> Caveats

dbeaver-community requires Java 8+. You can install the latest version with


  brew cask install java


==> Satisfying dependencies

==> Downloading https://github.com/dbeaver/dbeaver/releases/download/5.3.5/dbeaver-ce-5.3.5-macos.dmg

==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/44662669/a1006c00-3315-11e9-84bc-679ab5a9b0aa?X-Amz-Algor

######################################################################## 100.0%

==> Verifying SHA-256 checksum for Cask 'dbeaver-community'.

==> Installing Cask dbeaver-community

==> Creating Caskroom at /usr/local/Caskroom

==> We'll set permissions properly so we won't need sudo in the future.

Password:

==> Moving App 'DBeaver.app' to '/Applications/DBeaver.app'.

🍺  dbeaver-community was successfully installed!

MacBook-Pro:~ user$ 



  2. Java JDK 설치 하기

Java JDK 가 설치되어 있지 않으면 'Java JDK를 설치하세요'라는 메시지가 뜹니다. (JDK가 설치되어 있다면 2번은 건너뛰면 됩니다)

java 설치 여부 및 버전은 아래처럼 java -version 으로 터미널에서 확인해볼 수 있습니다. 저는 Java 가 없으니 설치가 필요(requesting install)하다고 메시지가 나오네요. 

MacBook-Pro:~ user$ java -version

No Java runtime present, requesting install.


Oracle 의 아래 주소에서 macOS용 jdk-11.0.2_osx_x64_bin.dmg 파일을 다운로드 받았습니다. 

[다운로드 주소]

https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html


Linux, macOS, Windows 중에서 자신의 OS에 맞는 것을 선택해서 다운로드 하면 됩니다. 이때 Oracle License Agreement 를 accept 한다고 체크를 해주어야 합니다. 


jdk-11.0.2_osx-x64.dmg 파일이 다운로드 완료되면 아이콘을 더블 클릭해서 설치 애플리케이션을 시작합니다. 가운데 아이콘을 클릭한 다음에 '계속' 단추를 누르면서 설치를 합니다. 맥북 비밀번호 입력하라는 창이 뜨면 비밀번호를 입력해주면 설치가 완료됩니다. 



JDK가 잘 설치되었는지 java -version으로 확인해보겠습니다.

MacBook-Pro:~ user$ java -version

java version "11.0.2" 2019-01-15 LTS

Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)

Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode) 



  3. Docker로 Greenplum DB 설치하고 실행하기

자세한 내용은 아래의 블로그 포스팅과 Docker Hub를 참고하시기 바랍니다. 

==>  https://rfriend.tistory.com/379

==> https://hub.docker.com/r/hdlee2u/gpdb-analytics

(터미널 사용)

## Docker 이미지 내려 받기

$ docker pull hdlee2u/gpdb-analytics

## Docker 이미지 확인 하기

$ docker images

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE

hdlee2u/gpdb-analytics  latest           3be773a1a7e1        About a minute ago   4.93GB

## Docker 이미지를 실행/ 5432를 기본 포트로, ssh를 2022포트를 사용하여 접근 가능하도록 Docker 컨테이너 생성

$ docker run -i -d -p 5432:5432 -p 28080:28080 --name gpdb-ds --hostname mdw hdlee2u/gpdb-analytics /usr/sbin/sshd -D


## Docker 컨테이너 목록 확인

$ docker ps

CONTAINER ID    IMAGE                   COMMAND                   CREATED             STATUS              PORTS                   NAMES

7518fd48450a        575a7d45999d        "/bin/bash"              1 minute ago         Up 6 hours                  0.0.0.0:5432->5432/tcp, 0.0.0.0:28080->28080/tcp   gpdb-ds


## Start GPDB and Use psql

$ docker exec -it gpdb-ds /bin/bash

[root@mdw /]# su - gpadmin

[gpadmin@mdw ~]$ gpstart -a



  4. DBeaver 실행하고, Greenplum DB 연결 설정하기 (GPDB connect)

맥북의 Launchpad에서 DBeaver 아이콘을 클릭하면 아래와 같은 DBeaver가 실행됩니다. 'Select your database' 화면창에서 'PostgreSQL'을 선택하고 '다음(Next)'을 선택합니다. 


Connection Settings 화면이 나오면 (3번에서 소개한 docker image 로 Greenplum DB를 론칭한 경우) 

 - Host: localhost

 - Database: gpadmin

 - User: gpadmin

 - Password: pivotal

 - Port: 5432

로 입력해주세요. 만약 다른 환경의 Greenplum DB를 사용하고 있다면 그에 맞게 Host, Database, User, Password를 설정해주면 됩니다. 


Greenplum Database에 DBeaver tool이 제대로 연결이 되면 아래 화면처럼 왼쪽 분할면에 Database, Schema, Tables 네비게이터가 나타나고, 테이블을 하나 선택하면 오른쪽는 Data 셋을 Grid나 Text 형태로 볼 수 있습니다. 

(테이블의 데이터 사이즈가 엄청 큰 경우에는 테이블을 클릭해서 Data 보기를 하지 마시기 바랍니다. DB가 다운되어서 DB관리자에게 요주의 인물로 찍히는 수가 있습니다. SQL Editor 창에서 select 문으로 limit  걸어서 조회하시기 바랍니다.)


SQL Editor 는 상단 메뉴에서 'SQL Editor'를 선택하거나, 또는 상단 메뉴바에서 '말아놓은 종이모양 아이콘'을 클릭하면 됩니다. 


SQL select 문을 쓸 때 from 절의 테이블 이름은 좌측 분할면의 Navigator 창에서 해당 테이블을 마우스로 드래그 & 드랍해서 SQL Editor의 from 절 다음에 가져다 놓으면 schmema_name.table_name 이 자동으로 써지므로 편리하게 이용할 수 있습니다. 

SQL Editor에 쓴 SQL query를 실행할 때는 'control(^) + enter' 를 누르거나, SQL Editor 창의 세모 (아래 화면 캡쳐의 빨간색 부분) 아이콘을 누르면 됩니다. 


이상으로 DBeaver 설치 및 DBeaver를 Greenplum Database에 연결하고 DB, Schema, Table 보기 및 Query 실행하는 방법에 대해서 알아보았습니다. 


많은 도움이 되었기를 바랍니다. 

이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾹 눌러주세요. 


728x90
반응형
Posted by Rfriend
,