JDBC批处理读取指定Excel中数据到Mysql关系型数据库
这个demo是有一个Excel中的数据,我需要读取其中的数据然后导入到关系型数据库中,但是为了向数据库中插入更多的数据,循环N次Excel中的结果.
关于JDBC的批处理还可以参考我总结的如下博文:
http://www.cnblogs.com/DreamDrive/p/5757693.html
此外用到了读取Excel文件的jxl.jar包
下载地址:http://files.cnblogs.com/files/DreamDrive/jxl.rar
附代码:
1 import java.io.FileInputStream; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.sql.Connection; 5 import java.sql.DriverManager; 6 import java.sql.PreparedStatement; 7 import java.sql.SQLException; 8 import java.sql.Statement; 9 import java.util.ArrayList; 10 import java.util.List; 11 12 import jxl.Cell; 13 import jxl.Workbook; 14 15 /** 16 * Excel模板中的数据分析导入到Mysql中. 17 * @author CDV-DX7 18 * 19 */ 20 public class ExcelToMysql { 21 public static void main(String[] args) { 22 String excelUrl = "C:\\Users\\CDV-DX7\\Desktop\\节目信息输入数据.xls"; 23 excel2db(excelUrl); 24 } 25 26 public static void excel2db(String importPath) { 27 List<Cell[]> rowList; 28 rowList = jxlGetExcelRows(importPath); 29 try { 30 long start = System.currentTimeMillis(); 31 Class.forName("com.mysql.jdbc.Driver"); 32 Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/50million?rewriteBatchedStatements=true","root","root"); 33 connection.setAutoCommit(false); 34 PreparedStatement cmd = connection.prepareStatement("insert into asset (assetname,director,screenwriter,actor,programtype,region,language,releasetime,duration,alias) " 35 + "values(?,?,?,?,?,?,?,?,?,?)"); 36 37 String assetname = null; 38 String director = null; 39 String screenwriter = null; 40 String actor = null; 41 String programtype = null; 42 String region = null; 43 String language = null; 44 String releasetime = null; 45 String duration = null; 46 String alias = null; 47 int totalCount = 0; 48 for (int k=1;k<442478;k++){ 49 //50万对应.........................redis是0号数据库 50 //100万对应循环次数8851---用时65680---redis是1号数据库 51 //500万对应循环次数44248---用时469947---redis是2号数据库 52 //1000万对应循环次数88496---用时1385016---redis是3号数据库 53 //5000万对应循环次数442478---用时C盘空间不够了....暂时不做数据了.. 54 for (int m=1; m<rowList.size(); m++) { 55 Cell[] cells = rowList.get(m); 56 for(int i=0; i<cells.length-1; i++){ 57 totalCount++; 58 String contents = cells[i].getContents(); 59 switch(i){ 60 case 0: 61 assetname = contents; 62 break; 63 case 1: 64 director = contents; 65 break; 66 case 2: 67 screenwriter = contents; 68 break; 69 case 3: 70 actor = contents; 71 break; 72 case 4: 73 programtype = contents; 74 break; 75 case 5: 76 region = contents; 77 break; 78 case 6: 79 language = contents; 80 break; 81 case 7: 82 releasetime = contents; 83 break; 84 case 8: 85 duration = contents; 86 break; 87 case 9: 88 alias = contents; 89 break; 90 91 } 92 } 93 cmd.setString(1,assetname); 94 cmd.setString(2,director); 95 cmd.setString(3,screenwriter); 96 cmd.setString(4,actor); 97 cmd.setString(5,programtype); 98 cmd.setString(6,region); 99 cmd.setString(7,language); 100 cmd.setString(8,releasetime); 101 cmd.setString(9,duration); 102 cmd.setString(10,alias); 103 104 cmd.addBatch(); 105 if(totalCount%10000==0){ 106 cmd.executeBatch(); 107 } 108 } 109 } 110 cmd.executeBatch(); 111 connection.commit(); 112 long end = System.currentTimeMillis();// 113 System.out.println("批量插入需要时间:"+(end - start)); 114 cmd.close(); 115 connection.close(); 116 } catch (Exception e) { 117 e.printStackTrace(); 118 } 119 } 120 121 /** 122 * 得到指定Excel文件中(可以再指定标签)中的行.... 123 * @param filename 124 * @return 125 */ 126 private static List<Cell[]> jxlGetExcelRows(String filename) { 127 InputStream is = null; 128 jxl.Workbook rwb = null; 129 List<Cell[]> list = new ArrayList<Cell[]>(); 130 try { 131 is = new FileInputStream(filename); 132 rwb = Workbook.getWorkbook(is); 133 // Sheet[] sheets = rwb.getSheets(); 134 // int sheetLen = sheets.length; 135 jxl.Sheet rs = rwb.getSheet(0); // 默认先读取第一个工作表的数据 136 137 //getRows() 获取总共多少行...getRow(n)获取第n行... 138 for(int i=0; i<rs.getRows(); i++ ){ 139 list.add(rs.getRow(i)); 140 } 141 } catch (Exception ex) { 142 ex.printStackTrace(); 143 } finally { 144 rwb.close(); 145 try { 146 is.close(); 147 } catch (IOException e) { 148 e.printStackTrace(); 149 } 150 } 151 return list; 152 } 153 }
本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/5826997.html,如需转载请自行联系原作者
JDBC批处理读取指定Excel中数据到Mysql关系型数据库相关推荐
- c 导入数据到oracle,excel中数据导入到Orcale数据库表中的方法 | 学步园
最近我们要做产品的测试,由于里面的数据量太少,上头要我往数据库的表里加上10000条记录.我想如果一条一条地往里加,还不要几个月呀,人也要被累死.所以,我很快地就想到了利用工具加. 就上网搜索,大多介 ...
- 使用LabVIEW读取微软Excel的数据
1.问题详述 如何在LabVIEW中读取微软Excel中的数值数据? 2.解决方案 LabVIEW中有两个可以帮助您读取Microsoft Excel中数据的VI: 读取带分隔符电子表格VI(Read ...
- Java利用Apace POI读取Excel中数据
Java利用Apace POI读取Excel中数据,解析数据 @Testpublic void readExcel() throws IOException{FileSystemView fsv = ...
- Rstudio中读取Excel中数据的详细步骤。
简述R语言读取Excel中数据的步骤. 代码命令行操作A.先安装xlsx的包 library(xlsx) table_test1 <- read.xlsx("G:/R/mvstats4 ...
- katalon实现读取excel中数据并自动上传
需求 1.登录平台 2.点击添加资产 3.点击url上传资产 4.输url地址 5.点击确定 6.点击选择功能类型 7.点击提交保存 实现 录制脚本如下 读取excel中数据 建议使用英文 问题 若元 ...
- Servlet获取Excel中数据的两种方式
Servlet解析Excel文件的两种方式 简单分享一下Servlet通过解析Excel文件得到其中数据的两种方式 第一种:前端获取 思路:通过layui的第三方插件 layui.excel 解析ex ...
- matlab的且数组专职,如何将excel中数据导入matlab并存入数组中/matlab导入数据并绘图...
怎样将matlab中的数据导入到excel中 1.首先打开matlab,新建窗口. 2.接着在matlab中生成,并且到excel文件中,具体代码如下图所示. 3.下面来看一下生成的myExample ...
- EXCEL中数据的自动匹配主要包含的内容
EXCEL中数据的自动匹配主要包含的内容: EXCEL中无法直接使用SELECT语句进行数据查询.定位.匹配,必须依赖其自身提供的函数.本文将介绍三种EXCEL中的数据自动匹配方法,使单元格内容能够自 ...
- http://www.dewen.net.cn/q/14665/个人感觉用二分法最完美的,需要操作系统支持随机读取指定一行的数据,貌似现在还不行,江湖救急呀...
http://www.dewen.net.cn/q/14665/个人感觉用二分法最完美的,需要操作系统支持随机读取指定一行的数据,貌似现在还不行,江湖救急呀 评论 (0) • 举报 (0) • 分享 ...
最新文章
- MySQL 用户与授权管理详解
- 说出一些数据库优化方面的经验?
- C 语言编程 — 编程实践
- 一些安全相关的HTTP响应头
- 更易于使用的Retrofit(不用写注解)
- [jQuery]点击某元素之外触发事件
- SP1043 GSS1 - Can you answer these queries I 猫树
- java args_Java命令行界面(第2部分):args4j
- mysql存放lng lat_使用空间点类型在MySQL中存储Lat Lng值
- ajax/test1.txt,ajax原生请求方法.txt
- mysql 每组取一条_MySql分组后随机获取每组一条数据的操作
- 技术提升为管理,最重要的能力是什么?
- 11.25晚C语言答疑
- 变频器基础:变频器工作原理与常用功能
- 如何获取小程序页面路径
- fms服务器ip修改,FusionSphere 平台修改管理网段和VLAN
- Mysql启动之报错:The server quit without updating PID file
- 数据结构 排序 思考题 3
- 安卓Apk安装过程,社招面试心得
- 华为手表开发:WATCH 3 Pro(17)传感器订阅指南针
热门文章
- Java分布式内存开源实现:Hazelcast
- 用node.js启动mock.js
- 互联网轻量级框架SSM-查缺补漏第二天
- Linux 中的虚拟网络
- Javascript中DOM技术的的简单学习
- [Config]如何利用ConfigurationSettings.AppSettings.GetValues读取配置文件中多个同Key的value...
- Android打Path的方法
- 批量替换sqlserver数据库TEXT字段类型的数据
- mysql 字符集和校对规则
- C# 配置文件读取与修改