批量储存数据到数据库

批量储存数据到数据库

1、实现思想

  1. sql语句进行批量储存 (少量推荐,大量不推荐)
  2. 使用jdbc进行循环插入 (少量不推荐,大量推荐)
    a:如果是从文件中获取的数据,可以先对文件进行解析 如爬取下来的xml文件或excel表格
    b:如果是纸质文件上获取内容,可以使用第三方识别接口,如百度的OCR等,然后对返回的json/excel进行解析循环到实体类中,再进行循环插入

2、实施思想

  1. sql:
insert into user(name,sex,age,carid) VALUES("张三","男","18","1111111111"),("李四","女","20","789451321")
  1. 循环
    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表格识别,且看我另一篇博客

猜你喜欢

转载自blog.csdn.net/G_liunian/article/details/103628232