如何用Java将excel数据导入数据库

简介:
最近写了点关于将excel导入 数据库的代码,当然也可以看做是对前面所介绍的小项目进行补充所做的准备。
  我一般都是先完成功能,然后将其封装成块,再添加到项目中,个人癖好不值得借鉴。项目中关于解析excel数据的方式请参考:http://blog.csdn.net/trsli/article/details/17392943
  这是已经成功插入数据化数据库中数据的记录,我新建的表为db.                            这是在控制台的数据输入
  很多时候拼接字符串是很多项目必须做的,该代码中我拼接了不少 sql语句,也许有更简单的方式,但是我现在只能想到这一步。
/**将execl数据导入数据库
* @author trsli
* */
public class CreateDBTable {
private static Connection conn;
private static String sql="";
private static StringBuffer buf=new StringBuffer();
static{
conn=DBConnection.getConnection();
}
public static void main(String[] args) {
//数据.xls文件路径
System.out.println("输入文件路径:");
String filename=new Scanner(System.in).nextLine();
//获取需要插入数据库的数据内容
Object[][] contents=new PoiUtil().getmessage(filename);
//获取数据库创建表格的字段名
Object[] titles=new PoiUtil().gettitles(filename);
System.out.println("输入数表格名:");
String fname=new Scanner(System.in).nextLine();
try {
String ziduan="";
String blank="";
PreparedStatement stmt=conn.prepareStatement(sql);
buf.append("create table "+fname+"( id int primary key auto_increment");
//拼接字符串,主要是为了完全实现动态创建数据表格以及后期插入数据
<span style="color:#ff6666;">for(int i=0;i<titles.length;i++){
buf.append(","+titles[i]+"  varchar(20)");
if(i==titles.length-1){//字符串末尾没有“,”
ziduan+=titles[i]+"";
blank+="?";
}else{
ziduan+=titles[i]+",";
blank+="?,";
}
}
</span>         //sql数据拼装完成
sql="insert into "+fname+"("+ziduan+") values ("+ blank+")";
buf.append(" );");
stmt.executeUpdate(buf.toString());
System.out.println("预处理...");
try {
Thread.sleep(2000);//用于保证数据库建表操作完成
System.out.println("建表成功...");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
<span style="color:#ff6666;">for(int i=0;i<contents.length;i++){
Object[] content=contents[i];//获取一行数据
PreparedStatement insert=conn.prepareStatement(sql);
for(int j=0;j<content.length;j++){
insert.setString(j+1, content[j].toString());//预加载数据
}
insert.executeUpdate();//插入数据
System.out.println("第"+i+"行成功...");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
</span>         }
System.out.println("插入数据完成");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

 整个代码很简单,可以从中提取出需要的方法,用于其它需要的地方,而这就是未来需要做的。个人感觉还有许多需要改进的地方,当然自从开始研究POI以来,我还没有对其进行更加深入的理解。比如红色代码块可以用批处理模式:addbatch方法。代码中的Thread.sleep()显得有点多余,主要原因是excel中德数据太少。
  这是数据库中数据的显示。  以下是原数据:
  最近公司安排的事情做得有点吃力,所以写点代码调节一下枯燥的心情。
最新内容请见作者的GitHub页:http://qaseven.github.io/

相关文章
|
30天前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——TestStu.java
hibernate正向生成数据库表以及配置——TestStu.java
16 1
|
30天前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.java
hibernate正向生成数据库表以及配置——Teacher.java
11 0
|
30天前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Student.java
hibernate正向生成数据库表以及配置——Student.java
10 0
|
22天前
|
存储 NoSQL Java
Java数据库编程指南:实现高效数据存储与访问
【4月更文挑战第2天】Java开发者必须掌握数据库编程,尤其是JDBC,它是连接数据库的标准接口。使用Spring JDBC或JPA能简化操作。选择合适的JDBC驱动,如MySQL Connector/J,对性能至关重要。最佳实践包括事务管理、防SQL注入、优化索引和数据库设计。NoSQL数据库如MongoDB也日益重要,Java有对应的驱动支持。理解这些概念和技术是构建高效数据库应用的基础。
Java数据库编程指南:实现高效数据存储与访问
|
8天前
|
SQL 缓存 Java
Java数据库连接池:优化数据库访问性能
【4月更文挑战第16天】本文探讨了Java数据库连接池的重要性和优势,它能减少延迟、提高效率并增强系统的可伸缩性和稳定性。通过选择如Apache DBCP、C3P0或HikariCP等连接池技术,并进行正确配置和集成,开发者可以优化数据库访问性能。此外,批处理、缓存、索引优化和SQL调整也是提升性能的有效手段。掌握数据库连接池的使用是优化Java企业级应用的关键。
|
30天前
|
存储 SQL C#
C#实现Excel合并单元格数据导入数据集
C#实现Excel合并单元格数据导入数据集
|
1月前
|
Java 数据库
java面向对象高级分层实例_数据库操作类
java面向对象高级分层实例_数据库操作类
11 1
|
1月前
|
安全 Java 数据库连接
jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)
jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)
154 0
|
1月前
|
SQL Java 关系型数据库
在Python中编写Java数据库驱动是不可能的
在Python中编写Java数据库驱动是不可能的
|
1月前
|
SQL Java 关系型数据库
Java数据库访问
Java数据库访问