批量储存数据到数据库
1、实现思想
- sql语句进行批量储存 (少量推荐,大量不推荐)
- 使用jdbc进行循环插入 (少量不推荐,大量推荐)
a:如果是从文件中获取的数据,可以先对文件进行解析 如爬取下来的xml文件或excel表格
b:如果是纸质文件上获取内容,可以使用第三方识别接口,如百度的OCR等,然后对返回的json/excel进行解析循环到实体类中,再进行循环插入
2、实施思想
- sql:
insert into user(name,sex,age,carid) VALUES("张三","男","18","1111111111"),("李四","女","20","789451321")
- 循环
a:直接上代码,代码有注释(我使用的是java爬虫爬取的xml文件,但是道理是一样的)
package mysql_fayuan;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class UserDao {
static Connection con = getConnection();
public static Connection getConnection(){
Connection conn = null;
try {
//初始化驱动类com.mysql.jdbc.Driver
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/yr_count_execute_assist?characterEncoding=UTF-8","root", "root");
//该类就在 mysql-connector-java-5.0.8-bin.jar中,如果忘记了第一个步骤的导包,就会抛出ClassNotFoundException
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void main(String[] args) {
duqu();
}
public static void duqu(){
//打开文件
File file = new File("E:\\project\\adnjian\\src\\main\\webapp\\a.xml");
Document document = null;
try {
//转码
document = Jsoup.parse(file, "utf-8");
// System.out.println(document);
//选取节点
Elements rows = document.getElementsByTag("rows").get(0).getElementsByTag("row");
System.out.println(rows.size());
//迭代内容
for (Element row : rows) {
User user = new User();
//再次选取节点
Elements cell = row.getElementsByTag("cell");
for (int i = 0; i < cell.size(); i++) {
Element element = cell.get(i);
String text = element.text();
if(i==0) user.setName(text);
if(i==1) user.setSex(text);
if(i==2) user.setAge(text);
if(i==3) user.setCarId(text);
}
dao(user);
}
}catch (IOException e){
System.out.println(e.getMessage());
}
}
public static void dao(User user){
String sql = "INSERT INTO user(name,sex,age,carid) VALUES (?,?,?,?)";
// 预处理sql语句
PreparedStatement presta = null;
try {
presta = con.prepareStatement(sql);
presta.setString(1,user.getName());
presta.setString(2,user.getSex());
presta.setString(3,user.getAge());
presta.setString(4,user.getCarId());
presta.execute();
presta.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
b:主要问题便是OCR表格识别,且看我另一篇博客