六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 104|回复: 0

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

[复制链接]

升级  0.4%

326

主题

326

主题

326

主题

探花

Rank: 6Rank: 6

积分
1008
 楼主| 发表于 2013-2-7 19:07:25 | 显示全部楼层 |阅读模式
<div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; width: 95%; padding-top: 4px;">1 如果是导出数据库,可以用java调用数据库的备份SQl语句
2 如果仅仅导出数据,请参考如下样例,其中tablename是表格的名字,pk指是否包含主键
注意:对于二进制和包含特殊字符的字段数据,需要额外处理,目前这个只能用于最简单的。
另:可参考 phpMyAdmin的导出功能
本代码采用SQL Server 
2000 数据库

[code
=Java]
<%@ 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 
= md.getColumnName(i + 1);
      
if (!showPK && fieldNames.equalsIgnoreCase("ID")) ...{
    
continue;
      }

      builder.append(fieldNames 
+ ",");
    }

    
// 去掉最后一个逗号
    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.equalsIgnoreCase("ID")) ...{
      
continue;
    }

    value 
= rs.getString(fieldNames);
    
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) ...{
      }

    }

  }

%>
[
/code]
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表