往数据库中导入大量的数据时,tomcat的配置往往需要做一些变化,比如加大tomcat数据库连接数我用的版本是tomcat5.5.23:在tomcat配置文件server.xml中,和连接数有关的参数有:
maxThreads最大连接线程数
minSpareThreads最小空闲连接线程数用于提高系统处理性能
maxSpareThreads最大空闲线程连接数
addeptCount允许最大连接数应该大于等于maxThread
connetionTimeout:网络连接超时,单位是ms,其中0表示永不超时,通常可设置为30000毫秒。
使用Java程序从数据库中查询大量数据时出现异常:java heap space
这是由于JVM可以调配使用的内存空间的设置太低,JVM在启动的时候会自动设置heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4,所以如果heap size设置偏小,除了会产生以上异常之外,程序的响应速度也会变慢。但是heap size最大不要超过可用物理内存的80%,设置如下:windows是在tomcat的安装路径下/bin/catalina.bat文件夹中加入set JAVA_OPTS=%JAVA_OPTS% -Xms400m -Xmx512m
如果要往数据库中导入大批量的excel数据也可以直接用SQL Server2005 提供的SSIS来快捷的导入到数据中。但是可能还要吧excel表转换成csv格式的。
因为做得项目中有这个需求,所以就逼着自己试了一会,在许师兄和张师兄的帮助下,终于编译通过了,收获不少啊,首先要确保有相应的api,这里我们用的是java excel的jxl.jar ,把这个包放在应用的lib文件夹下面,然后在处理页面中引用相应的类来为从excel数据表中读取数据做准备,剩下的就是代码实现了,其中关键的代码是
filename=request.getParameter(”url”);
Workbook workbook=Workbook.getWorkbook(new File(filename));
Sheet sheet=workbook.getSheet(0);
int rows=sheet.getRows();
int columns=sheet.getColumns();
String [] content=new String [100];
for(int i=1;i {
for(int j=1;j {
Cell cell=sheet.getCell(j,i);
content[j]=cell.getContents();
}
}
接下来要实现的就是把导出来的数据插入到相应的表中,这里要有一个转换比如说在excel中用汉字实现的而在数据库中是用int型的数字实现的,所以这就要在插入之前先做一下转换,还有一个问题就是要插入的字段在该表中是另一个表的外键例如在excel中存的是一个人的工种名称,但是在这个人的基本信息表中工种名称是以外健形式存在的通过两个表join来获取工种名称,所以在插入之前要把读出的工种名称转换为工种的pid然后插入到数据库中。所有这些都实现了以后就可以使用insert来插入到数据库了。