您的位置:首页 > 数据库

导出数据库数据的方法,适合简单的数据库表格结构

2008-02-26 09:43 751 查看
1 如果是导出数据库,可以用java调用数据库的备份SQl语句


2 如果仅仅导出数据,请参考如下样例,其中tablename是表格的名字,pk指是否包含主键


注意:对于二进制和包含特殊字符的字段数据,需要额外处理,目前这个只能用于最简单的。


另:可参考 phpMyAdmin的导出功能


本代码采用SQL Server 2000 数据库





<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>


<%@ page import="java.sql.*"%>


<%


boolean showPK = ParamUtils.getIntParameter(request, "pk", 0) == 1;


String tableName = request.getParameter("tablename");




if (tableName == null || tableName.trim().length() == 0) ...{


out.println("表格名称为空!");


return;


}




Connection con = null;


Statement stat = null;


ResultSet rs = null;




try ...{




con = Factory.getDataSource().getConnection();




if (con == null) ...{


out.println("得到数据库连接失败!");


return;


}


stat = con.createStatement();


rs = stat.executeQuery("select * from " + tableName + " " + NoNull.toString(request.getParameter("sql")));






if(showPK)...{


out.print("SET IDENTITY_INSERT dbo."+tableName+" ON<br>");


}




ResultSetMetaData md = rs.getMetaData();


String[] fieldNames = new String[md.getColumnCount()];


StringBuilder builder = new StringBuilder("insert into " + tableName + "(");




for (int i = 0; i < md.getColumnCount(); i++) ...{


fieldNames[i] = md.getColumnName(i + 1);




if (!showPK && fieldNames[i].equalsIgnoreCase("ID")) ...{


continue;


}


builder.append(fieldNames[i] + ",");


}


// 去掉最后一个逗号


builder.deleteCharAt(builder.length() - 1);


builder.append(") values(");


StringBuilder line = new StringBuilder();


String value;




while (rs.next()) ...{


line.delete(0, line.length());


line.append(builder.toString());




for (int i = 0; i < fieldNames.length; i++) ...{




if (!showPK && fieldNames[i].equalsIgnoreCase("ID")) ...{


continue;


}


value = rs.getString(fieldNames[i]);




if (value == null) ...{


line.append("null,");




} else ...{


line.append("'");


line.append(value);


line.append("',");


}


}


line.deleteCharAt(line.length() - 1);


line.append(");");


out.println(line.toString() + "<br/>");


}




if(showPK)...{


out.print("SET IDENTITY_INSERT dbo."+tableName+" OFF<br>");


}




} catch (Exception ex) ...{


out.print(ex);




} finally ...{




if (stat != null) ...{




try ...{


stat.close();




} catch (Exception ex) ...{


}


}




if (con != null) ...{




try ...{


con.close();




} catch (Exception ex) ...{


}


}


}


%>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐