'SchemaSpy'에 해당되는 글 3

  1. 2009.07.25 SQL Server 2005에서 SchemaSpy 실행하기
  2. 2009.07.25 [IBM dWs] SchemaSpy - 데이터베이스 문서화하기
  3. 2009.07.24 SchemaSpy 실행시 charset 지정하기 2

SQL Server 2005에서 SchemaSpy 실행하기

- 데이터베이스 타입을 mssql05로 두고, 드라이버를 sqljdbc.jar를 사용한 경우 아래와 같은 에러가 발생한다.

Failed to retrieve column comments: com.microsoft.sqlserver.jdbc.SQLServerException: variant 데이터 형식은 지원되지 않습니다.
SELECT OBJECT_NAME(c.object_id) AS TABLE_NAME, c.name AS COLUMN_NAME, ex.value AS comments FROM sys.columns c LEFT OUTER JOIN sys.extended_properties ex ON ex.major_id = c.object_id AND ex.minor_id = c.column_id AND ex.name = 'MS_Description' WHERE OBJECTPROPERTY(c.object_id, 'IsMsShipped')=0 ORDER BY OBJECT_NAME(c.object_id), c.column_id
com.microsoft.sqlserver.jdbc.SQLServerException: 연결이 닫혔습니다.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerDatabaseMetaData.checkClosed(Unknown Source)
    ...
    at net.sourceforge.schemaspy.SchemaAnalyzer.analyze(SchemaAnalyzer.java:164)
    at net.sourceforge.schemaspy.Main.main(Main.java:21)

- 데이터베이스 타입을 mssql05-jtds로 바꾼다.

[IBM dWs] SchemaSpy - 데이터베이스 문서화하기

- 사람을 위한 자동화: 전자동 문서화

- SchemaSpy - Graphical Database Schema Metadata Browser

- Graphviz 가 필요함.
이클립스를 사용하면 설치후 이클립스 재시작 필요
재시작하지 않으면 PATH에 추가된 Graphviz를 Ant로 실행시키지 못한다.

- Ant
<project name="schemaspy" default="create_schema" basedir=".">

	<property name="reports.dir" value="doc/db/schema/"/>
	<property name="driver.jar" value="web/WEB-INF/lib/jtds-1.2.2.jar"/>
	<property name="schemaSpy.jar" value="devlib/schemaSpy_4.1.1.jar"/>

	<target name="create_schema">
		<java jar="${schemaSpy.jar}" output="${reports.dir}/output.log" error="${reports.dir}/error.log" fork="true" failonerror="true">
		    <arg line="-t mssql05-jtds"/>
		    <arg line="-host 127.0.0.238"/>
		    <arg line="-port 1433"/>
		    <arg line="-db DATABASE"/>
		    <arg line="-s dbo"/>
		    <arg line="-u USER"/>
		    <arg line="-p PASSWORD"/>
		    <arg line="-i TEST"/>
		    <arg line="-desc 'xxxxxxx'"/>
		    <arg line="-cp ${driver.jar}"/>
		    <arg line="-o ${reports.dir}/out"/>
		    <arg line="-charset UTF-8"/>
		</java>
	</target>
	
</project>	

- 실행 옵션
  • -s : SQL Server 2005에서는 테이블명이 dbo.TABLE로 되어 있음. dbo로 지정해야 함.
  • -i : TB.* 는 TB로 시작하는 테이블/뷰만을 대상으로 한다.
  • -cp : path 태그는 안되고 property로 해야 함. 드라이버 위치를 지정해 준다.
  • -charset : 지정하지 않으면 한글이 깨짐
- 뷰도 보임
그러나 다른 데이터베이스 개체는 안보임.

SchemaSpy 실행시 charset 지정하기

SchemaSpy로 생성되는 HTML파일은 charset이 ISO-8859-1이어서 한글이 깨진다.
실행인자를 설명한 표에는 인코딩에 관련된 내용은 없다.
Ant로 처리해야 하나?

오늘[각주:1] 다시 SchemaSpy(4.1.1)를 살펴보다가 소스를 살펴봤다.

- net.sourceforge.schemaspy.view.HtmlFormatter.java
out.writeln("  <meta HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=" + Config.getInstance().getCharset() + "'>");
out.writeln("  <SCRIPT LANGUAGE='JavaScript' TYPE='text/javascript' SRC='" + (table == null ? "" : "../") + "jquery.js'></SCRIPT>");

- net.sourceforge.schemaspy.Config.java
public String getCharset() {
    if (charset == null) {
        charset = pullParam("-charset");
        if (charset == null)
            charset = "ISO-8859-1";
    }
    return charset;
}

이럴수가....문서화되지 않은 인자가 더 많은거 같다.


  1. 2009-07-24 [본문으로]