MySQL 에서 쿼리 결과를 Ctrl+C 해서 Excel에 붙여넣기를 하다보면 결과값 중에 엔터값이나 캐리지 리턴 값이 있는 경우 엑셀의 셀을 벗어나 버리는 상황이 발생합니다.

 

이럴때 replace함수를 이용하여 처리하면 한줄로 처리됩니다.

 

SELECT

       REPLACE(REPLACE(MSG_KOR_TXT,'\r\n',' '),'\r',' ') AS MSG_TXT
FROM MSG

 

 

 



MSSQL/Oracle/MySQL JDBC Driver Test

Posted 2013. 6. 10. 21:45

간만에 삽질을 또 했습니다.

한동안 MySQL을 주로 사용하다가, Oracle을 썼고, 이번엔 MSSQL을 쓰게 되었는데, 초보적인 삽질아닌 삽질을 했습니다.

 

지난주까지 멀쩡하게 잘 되던 SqlServer 접속이 안되는 것입니다. 아무리 컴퓨터는 거짓말을 않한다지만...

 

원인은 이렇습니다.

 

1. 잘못된 Copy & Paste

 Class.forName("dirverName") 에 대한 부분이 좀 이상했습니다.

com.microsoft.sqlserver.jdbc.SQLServerDriver vs com.microsoft.jdbc.sqlserver.SQLServerDriver

 

...sqlserver.jdbc.SQLD~ 가 맞습니다.

 

2. DBMS마다 URL 형식이 다릅니다.

 

 - MySQL : jdbc:mysql://127.0.0.1:33061/dbName?

 - Oracle : jdbc:oracle:thin:@127.0.0.1:1521:orcl

 - MSSQL : jdbc:sqlserver://127.0.0.1:433;databaseName=dbName

 - MSSQL(jtds) : jdbc:jtds:sqlserver://127.0.0.1:1433/dbName;tds=8.0

 

정확히 언급하면 같은 DBMS 일지라도 jdbc Driver마다 다르다고 할수 있습니다.

 

3. DBMS 버전, JDK 버전마다 jdbc Driver가 다릅니다.

 

Oracle의 경우 초창기엔 classes12.jar/zip 을 썼지만 현재는 ojdbc를 사용합니다.

MSSQL의 경우 jdk1.5의 경우 JDBC3.0 스펙의 sqljdbc.jar를 사용하지만

jdk1.6의 경우엔 위의 jar를 사용할 경우 Connection이 되지 않습니다.

jdk 1.6 이상에서는 JDBC4.0 스펙의 sqljdbc4.jar를 사용합니다.

 

 

결론은 주말에 기존 작업하던 노트북 HDD를 SSD로 교체하면서 OS를 재설치 했습니다. 설치하면서 jdk1.5, jdk1.6 두개 설치했던것을 jdk1.6만 설치해서 접속이 되지 않은 것입니다.

 

더군다나 중간에 googling 하여 copy & paste 소스에도 driver class package명이 다르게 적혀있어서 삽질을 더 오래하게 되었습니다.

 

각 DBMS별 connection을 가져오는 pseudo 코드는 다음과 같습니다.

1. MS-SQL

//MS에서 제공하는 드라이버를 사용하는 경우
  String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=dbName";
  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

  Connection conn = DriverManager.getConnection(url, "db_user", "db_password"); 

//net sourceforge.net에서 제공하는 드라이버를 사용하는 경우

String url = "jdbc:jtds:sqlserver://127.0.0.1:1433/DBMS명";
Class.forName("net.sourceforge.jtds.jdbc.Driver");

Connection conn = DriverManager.getConnection(url, "db_user", "db_password"); 

 

 

2. Oracle 의 경우

 String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
 Class.forName("oracle.jdbc.OracleDriver");

...

 

3. MySQL 의 경우

String url = "jdbc:mysql://127.0.0.1:33061/dbName?"

Class.forName("com.mysql.jdbc.Driver");

 

....

 

MSSQL의 3가지 종류 jdbc Driver

 

sqljdbc.jar

 

sqljdbc4.jar

 

jtds-1.3.0.jar

 



MySQL 이 오라클로 넘어가면서 MySQL을 개발한 유명한 개발자 몬티 와이드니우스가 나와서 새롭게 만들어 발전시키고 있는  MariaDB 에 대해 알아봐야할것 같습니다.

 

- KTH 개발자 블로그에 소개된 MariaDB 입니다.

http://dev.kthcorp.com/2012/06/21/mariadb-mysql-twins/

 

- 최근 몬티 와이드니우스와 인터뷰한 내용입니다.

http://www.bloter.net/archives/142487

 

- MariaDB 홈페이지입니다.

https://mariadb.org/

 

정체되어 있는 MySQL과 다르게 이미 성능면에서도 MySQL을 앞서가고 있는 듯 합니다.

사용법은 기존 MySQL과 거의 동일하다고 하니 기존 MySQL을 썼던 많은 사이트들이 옮겨가지 않을까 생각합니다.

한번 사용해 봐야겠습니다.

 

한편으로는 오라클의 폐쇄적인 정책이 그동안 MySQL의 그늘에서 가려있던 다른 오픈소스 DBMS에게는 더없는 기회가 될수도 있을것 같습니다. MySQL을 버리고 MariaDB가 아닌 다른 DB를 선택하는 사이트도 많을 것이기 때문입니다.


 

'DBMS' 카테고리의 다른 글

MariaDB vs MySQL과의 호환성 체크  (1) 2013.02.06
MariaDB 설치하기  (0) 2013.02.06
Oracle 11g client설치 관련  (0) 2012.06.04
[펌] oracle 11g 설치와 operating, dml, ddl 명령어 요약  (0) 2012.05.10
분산DB에 대한 연구중...  (0) 2010.11.24


« PREV : 1 : 2 : 3 : 4 : 5 : ··· : 15 : NEXT »