2012-07-08 3 views
3

XML에서 데이터베이스의 데이터를 내보내는 코드가 있습니다.Java에서 전체 데이터베이스의 데이터를 내보내는 방법은 무엇입니까?

public class DataExtractor{ 

    private final String login, passwd, host; 

    public DataExtractor(String login, String passwd, String host){ 
     this.login = login; 
     this.passwd = passwd; 
     this.host = host; 
    } 

    public String getTableData(String tableName) throws SQLException, ClassNotFoundException { 
     Connection con = null; 
     Statement st = null; 
     ResultSet rs = null; 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      con = DriverManager.getConnection("jdbc:mysql:///" + host, login, passwd); 

      st = con.createStatement(); 
      rs = st.executeQuery("select * from " + tableName); 

      ResultSetMetaData rsmd = rs.getMetaData(); 
      int colCount = rsmd.getColumnCount(); 

      StringBuilder b = new StringBuilder("<table>\n"); 

      int num = 1; 
      while (rs.next()) { 
       b.append("<row>"); 
       b.append("<num>").append(num++).append("</num>"); 
       for (int i = 1; i <= colCount; i++) { 
        String columnName = rsmd.getColumnName(i); 
        b.append('<').append(columnName).append('>'); 
        b.append(rs.getObject(i)); 
        b.append("</").append(columnName).append('>'); 
       } 
       b.append("</row>\n"); 
      } 
      b.append("</table>"); 
      return b.toString(); 
     } catch (SQLException e) { 
      throw e; 
     } catch (ClassNotFoundException e) { 
      throw e; 
     } finally { 
      if (rs != null) 
       try { 
        rs.close(); 
       } catch (SQLException e) { 
       } 
      if (st != null) 
       try { 
        st.close(); 
       } catch (SQLException e) { 
       } 
      if (con != null) 
       try { 
        con.close(); 
       } catch (SQLException e) { 
       } 
     } 
    } 
} 

그러나 데이터가 특정 테이블에서 전체 데이터베이스 (즉, 모든 테이블)에서 내 보낸, 그리고 있는지 확인하는 방법 데이터 만 주어진 테이블에서 수출의 클래스입니다. 즉, 출력 XML 파일 형식 가야한다 :

<database> 
      <table1> 
             <id> </ id> 
             <Name> </ Name> 
                           ... 
       </ table1> 

        <table2> 
               ... 
       </ table2> 


</ database> 
+0

DBMS 문서를보고 싶을 수 있습니다. 대부분은 CVS, XML 또는 바이너리에 내장 된 내보내기 기능을 제공합니다 ... – home

답변

2

사용 :

show tables 

다음 방법 테이블을 통해 루프를 호출 getTableData()

당신은 열을 받고 고려하는 것이 좋습니다 이름 :
SHOW columns FROM table

+0

"'table_name'"? – Lion

+0

지금은 오라클이 아닌 MySql이라는 것을 볼 수 있습니다. – alfasin

0

다음과 같이 사용할 수 있습니다. dbsql2xml은 관계형 데이터베이스를 계층 적 XML로 변환 (내보내기, 변환)하기위한 Java 도구 (클래스)입니다. JRE 5.0, JDBC 및 SQL DBMS가 필요합니다. "dbsql2xml"은 데이터베이스 테이블과 컬럼을 트리 요소 XML로 매핑하기 위해 XML 문서를 사용합니다.

0

Dbunit은 데이터베이스 데이터를 XML로 조작하기위한 잘 정립 된 도구입니다.

데이터베이스에서 관련 데이터 하위 집합을 추출하는 데 유용한 또 다른 도구는 jailer입니다. 또한 dbunit XML 형식을 지원합니다.

관련 문제