Java如何从整个数据库导出数据?
问题描述:
有一个代码可以用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>
答
您可以使用这个: dbsql2xml是用于将关系数据库转换(导出,转换)为分层XML的Java工具(类)。它需要JRE 5.0,JDBC和SQL DBMS。 “dbsql2xml”使用XML文档将数据库表和列映射到树的元素XML
你可能想看看你的DBMS的文档。大多数提供了一个内置的导出功能 - 无论是在CVS,XML或二进制文件... – home 2012-07-08 07:24:07