导出数据库中所有数据到Excle中
- Workbook wb = new HSSFWorkbook();//创建工作簿
- Connection conn = DataSourceUtils.getDataSource().getConnection();//获取数据库连接
- Statement stmt = conn.createStatement();
- DatabaseMetaData dbmd = conn.getMetaData();//获取结果集conn的所有信息
- ResultSet dnset = dbmd.getCatalogs();//获取数据库目录
- while (dnset.next()) {//遍历所有数据库
- String dbName = dnset.getString("TABLE_CAT");//获取所有数据库名称
- {
- ResultSet tSet = dbmd.getTables(dbName, dbName, null,new String[] { "TABLE" });
- while (tSet.next()) {//遍历数据库中所有表
- String tName = tSet.getString("TABLE_NAME");
- stmt.execute("use " + dbName);//
- String sql = "select * from " + tName;
- Sheet sheet = wb.createSheet(tName);//为表创建一个sheet
- Row row = sheet.createRow();//
- ResultSet rSet = stmt.executeQuery(sql);
- ResultSetMetaData rsmd = rSet.getMetaData();
- int count = rsmd.getColumnCount();
- List<String> list = new ArrayList<String>();
- for (int i = ; i < count; i++) {//获取表头并保存到cell中
- String name = rsmd.getColumnName(i + );
- row.createCell(i).setCellValue(name);
- list.add(name);
- }
- int i = ;
- while (rSet.next()) {//讲查询数据保存到cell中
- i++;
- int j = ;
- Row row2 = sheet.createRow(i);
- for (String s : list) {
- String value = rSet.getString(s);
- Cell cell = row2.createCell(j);
- cell.setCellValue(value);
- j++;
- }
- }
- FileOutputStream out = new FileOutputStream("d:/a.xls");//写入workbook
- wb.write(out);
- out.close();
- }
- }
- }
- System.out.println("Success");
加强:有的数据库中不允许Result嵌套,所以需要把数据暂存到List中进行加强,提高兼容性
- Workbook wb = new HSSFWorkbook();//创建工作簿
- Connection conn = DataSourceUtils.getDataSource().getConnection();//获取数据库连接
- Statement stmt = conn.createStatement();
- DatabaseMetaData dbmd = conn.getMetaData();//获取结果集conn的所有信息
- ResultSet dnset = dbmd.getCatalogs();//获取数据库目录
- List<String> dbnameList=new ArrayList<String>();//数据库名
- while (dnset.next()) {//遍历所有数据库
- String dbName = dnset.getString("TABLE_CAT");//获取所有数据库名称
- dbnameList.add(dbName);
- }
- for(String dbName:dbnameList)
- {
- List<String> tanameList=new ArrayList<String>();//数据库中表名
- ResultSet tSet = dbmd.getTables(dbName, dbName, null,new String[] { "TABLE" });
- while (tSet.next()) {//遍历数据库中所有表
- String tName = tSet.getString("TABLE_NAME");
- tanameList.add(tName);
- }
- stmt.execute("use " + dbName);//
- for(String tName:tanameList)
- {
- String sql = "select * from " + tName;
- Sheet sheet = wb.createSheet(tName);//为表创建一个sheet
- Row row = sheet.createRow(0);//
- ResultSet rSet = stmt.executeQuery(sql);
- ResultSetMetaData rsmd = rSet.getMetaData();
- int count = rsmd.getColumnCount();
- List<String> list = new ArrayList<String>();
- for (int i = 0; i < count; i++) {//获取表头并保存到cell中
- String name = rsmd.getColumnName(i + 1);
- row.createCell(i).setCellValue(name);
- list.add(name);
- }
- int i = 0;
- while (rSet.next()) {//讲查询数据保存到cell中
- i++;
- int j = 0;
- Row row2 = sheet.createRow(i);
- for (String s : list) {
- String value = rSet.getString(s);
- Cell cell = row2.createCell(j);
- cell.setCellValue(value);
- j++;
- }
- }
- FileOutputStream out = new FileOutputStream("d:/a.xls");//写入workbook
- wb.write(out);
- out.close();
- }
- }
- System.out.println("Success");
导出数据库中所有数据到Excle中的更多相关文章
- Hive扩展功能(三)--使用UDF函数将Hive中的数据插入MySQL中
软件环境: linux系统: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8 主机配置: 一共m1, m2, m3这五部机, 每部主机的用户名都为centos ...
- SQLServer2008 和SQLServer2008 R2版本导出 数据库结构和数据sql
①SQLServer2008 版本导出 数据库结构和数据sql ②SQLServer2008R2 版本导出 数据库结构和数据sql 采集 #HUABAN_WIDGETS .HUABAN-red-nor ...
- 一个I/O线程可以并发处理N个客户端连接和读写操作 I/O复用模型 基于Buf操作NIO可以读取任意位置的数据 Channel中读取数据到Buffer中或将数据 Buffer 中写入到 Channel 事件驱动消息通知观察者模式
Tomcat那些事儿 https://mp.weixin.qq.com/s?__biz=MzI3MTEwODc5Ng==&mid=2650860016&idx=2&sn=549 ...
- flink04 -----1 kafkaSource 2. kafkaSource的偏移量的存储位置 3 将kafka中的数据写入redis中去 4 将kafka中的数据写入mysql中去
1. kafkaSource 见官方文档 2. kafkaSource的偏移量的存储位置 默认存在kafka的特殊topic中,但也可以设置参数让其不存在kafka的特殊topic中 3 将k ...
- Oracle数据库间的数据复制 - SQLPlus中的COPY命令
Copy命令可以实现不同Oracle数据库间的数据的复制,也是可以实现同一数据库的数据复制,其性能表现和导入/导出相同. 根据9i文档,说Copy命令未来会不支持,但实际上Oracle 11g仍然支持 ...
- 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中
using System; using System.Collections.Generic; using System.Text; using System.IO; using NPOI.SS.Us ...
- winfrom 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中
1.通过NUGET管理器下载nopi,在引入命令空间 using System; using System.Collections.Generic; using System.Text; using ...
- C# 读取Excel中的数据到DataTable中
原文地址:http://www.open-open.com/code/view/1420029490093 public DataTable ExcelToDS(string Path) { stri ...
- 映射Xml文件中的数据到JavaBean中
使用Java原生的javax.xml.bind包下的JAXBContext将一个Xml文件中的数据映射到一个JavaBean中 import java.io.File; import java.io. ...
随机推荐
- 用javascript预加载图片、css、js的方法研究
预加载的好处可以让网页更快的呈现给用户,缺点就是可能会增加无用的请求(但图片.css.js这些静态文件可以被缓存),如果用户访问的页面里面的css.js.图片被预加载了,用户打开页面的速度会快很多,提 ...
- IIS开启伪静态后html静态页面无法访问的解决方法
IIS开启伪静态后,发现原本存在的html静态页面无法访问了,显示的404错误.网上查了下,是因为实现伪静态就是使用 URLRewriter 来映射后缀,会把asp等动态页面映射成html,但是原来存 ...
- PHP连续签到
require "./global.php"; $act = isset($_GET['act']) ? $_GET['act'] : "error"; // ...
- 图的建立——邻接矩阵表示(C语言+VC6.0平台)
图的邻接矩阵表示及其建立(无向图) #include <stdio.h> #include <stdlib.h> typedef char VertexType; ...
- Bootstrap基础教程
Bootstrap——来自Twitter的流行前端框架 一:Bootstrap简介 Boostrap是一个非常受欢迎的前端开发框架,该框架极大的提高前端团队的开发效率. Bootstrap对常见的CS ...
- SpringMVC——从HelloWorld
学习SpringMVC——从HelloWorld开始 前言: 时隔十二年,中国女排最终过关斩将,用3:1的成绩证明了自己的实力,霸气夺冠,为中国赢得了一枚意义非常的金牌.这是一次全民的狂欢,一场视 ...
- DOM 之通俗易懂讲解
DOM是所有前端开发每天打交道的东西,但是随着jQuery等库的出现,大大简化了DOM操作,导致大家慢慢的“遗忘”了它的本来面貌.不过,要想深入学习前端知识,对DOM的了解是不可或缺的,所以本文力图系 ...
- 禁用USB存储设备(不重启)
Title:禁用USB存储设备(不重启) -- 2012-09-13 12:08 在win2003实验,USB存储禁止,无需重启! stop usbrw.reg ------------------- ...
- cf D. Broken Monitor
http://codeforces.com/contest/370/problem/D 题意:输入一张图,上面只有两个字符'w'和‘.’ ,如果可以用一个正方形把所有的‘w’围起来,所有的‘w’都在正 ...
- Cracking the coding interview--Q1.7
原文 Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column are s ...