sqlline의 간단 가이드와 docker Image 만들기
Updated:
sqlline
sqlline은 관계형 DataBase SQL을 다루기 위한 Command-line shell 입니다.
실제로 사용했던 용도는 DataBase Connection이 제대로 되는지를 체크하기 위함입니다.
관련 Dockerfile 작성
- ojdbc6.jar ojdbc8.jar, postgresql-42.2.18.jar와 openjdk11, sqlline, telnet, curl 을 깔았음
- Dockerfile 내용
FROM ubuntu:18.04
MAINTAINER yoonseoklee
RUN apt-get update && \
apt-get install -y openjdk-11-jdk && \
apt-get install -y sqlline && \
apt-get install -y telnet && \
apt-get install -y curl
RUN cd /usr/share/java \
&& mkdir -p psql \
&& cd psql \
&& curl -o postgresql.jar https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.18/postgresql-42.2.18.jar
ADD https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc6/11.2.0.4/ojdbc6-11.2.0.4.jar /usr/share/java/ojdbc6/
ADD https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/19.8.0.0/ojdbc8-19.8.0.0.jar /usr/share/java/ojdbc8/
ENTRYPOINT ["/bin/sh", "-c", "/bin/bash"]]
- 관련 이슈 : sqlline은 최소 Java10 버젼 이상을 설치해야 한다.
- Exception in thread “main” java.lang.UnsupportedClassVersionError: sqlline/SqlLine has been compiled by a more recent version of the Java Runtime (class file version 54.0), this version of the Java Runtime only recognizes class file versions up to 52.0
- JDK8으로 설치 했을때의 관련 이슈, sqlline을 실행하기 위해서는 최소 Java10 이상 설치를 해야 합니다.
- Exception in thread “main” java.lang.UnsupportedClassVersionError: sqlline/SqlLine has been compiled by a more recent version of the Java Runtime (class file version 54.0), this version of the Java Runtime only recognizes class file versions up to 52.0
그다음 Dockerfile이 있는 위치에서, 원하는 이름으로 image를 만듭니다.
docker build -t 원하는이미지이름 .
그다음, docker run 명령을 통해 container를 실행합니다.
docker run -it --name 원하는container이름 만든이미지이름
그다음, docker exec 명령을 통해 container 내부로 들어갑니다.
docker exec -it 만들어진container이름 bash
- 만약, docker-compose를 통해 연동하고 싶을때는 다음과 같이 테스트 해볼 수 있습니다.
version: '2'
services:
sqlline:
image: 만든이미지이름
ports:
- 4000:4000
tty: true
sqlline connect 연동 간단 사용법
- 연동이 되는지 확인할 DataBase가 Oracle 이었기 때문에, Oracle 기준으로 설명을 드립니다.
- ojdbc6.jar 혹은 ojdbc8.jar를 세팅해줘야 합니다.
-
ojdbc6.jar를 세팅하려면 다음과 같이 입력합니다.
java -cp "/usr/share/java/*:/usr/share/java/ojdbc6/ojdbc6-11.2.0.4.jar" sqlline.SqlLine
- 설명 : Driver를 sqlline이 제대로 catch하지 못하기 때문에, cp 옵션으로 해결해야 합니다.
- 관련 출처 : https://github.com/julianhyde/sqlline/issues/450
- 그다음 Driver가 제대로 세팅 되었는지 !scan 명령을 통해 확인합니다.
- 그다음 !connect 명령을 통해 Oracle 접속을 시도합니다.
- !connect jdbc:oracle:thin:@[ip]:[port]/[ServiceName] [id] [pw] 을 입력합니다.
- 여기서 접속이 정확히 되었는지 확인하려면, SQL 관련 쿼리문을 반드시 날려봐야 합니다.
- !dbinfo 라고 날렸을때 관련 정보가 나온다면 연결이 된 것입니다.
간단한 예제의 형태는 다음과 같습니다.
- 설명 : Driver를 sqlline이 제대로 catch하지 못하기 때문에, cp 옵션으로 해결해야 합니다.
-
ojdbc8.jar 또한 위와 유사합니다.
java -cp "/usr/share/java/*:/usr/share/java/ojdbc8/ojdbc8-19.8.0.0.jar" sqlline.SqlLine
- 그 이후 과정은 위와 동일합니다.
-
참고 :
Leave a comment