zoukankan      html  css  js  c++  java
  • Mysql的批量导入

    1. 下面的是java代码的实现
    package cn.enjoy;
    
    
    import org.junit.Test;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.text.SimpleDateFormat;
    import java.time.LocalDateTime;
    import java.util.Date;
    
    
    public class InsertDemo {
    
        private static String user = "root";
        private static String pass = "123456";
        private static String URL = "jdbc:mysql://127.0.0.1:3306/test";
    
    
        @Test
        public void test1() throws  Exception{
            BufferedReader br = new BufferedReader(new FileReader("D:\product_info.sql"));
            Connection conn = DriverManager.getConnection(URL , user, pass);
    
            LocalDateTime now = LocalDateTime.now();
            System.out.println(now);
            br.lines().forEach(sql->{
                try {
                    PreparedStatement ps = conn.prepareStatement(sql);
                    ps.executeUpdate();
                    ps.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
            br.close();
            conn.close();
    
            LocalDateTime now2 = LocalDateTime.now();
            System.out.println(now2);
        }
    
    
        int i=0;
        @Test
        public void test2() throws  Exception{
            BufferedReader br = new BufferedReader(new FileReader("D:\product_info.sql"));
            Connection conn = DriverManager.getConnection(URL , user, pass);
    
            LocalDateTime now = LocalDateTime.now();
            System.out.println(now);
            conn.setAutoCommit(false);
    
            br.lines().forEach(sql->{
                try {
                    PreparedStatement ps = conn.prepareStatement(sql);
                   ps.addBatch();
                    if((i%2000)!=0 && i<=2097152) {
                        i++;
                    }else {
                        ps.executeBatch();
                        conn.commit();
                        i=0;
                    }
    
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
            br.close();
            conn.close();
    
            LocalDateTime now2 = LocalDateTime.now();
            System.out.println(now2);
        }
    
    
        String str = "INSERT INTO `product_info` VALUES ";
    
        @Test
        public void test3() throws  Exception{
            BufferedReader br = new BufferedReader(new FileReader("D:\product_info.sql"));
            Connection conn = DriverManager.getConnection(URL , user, pass);
    
            LocalDateTime now = LocalDateTime.now();
            System.out.println(now);
            conn.setAutoCommit(false);
    
            br.lines().forEach(sql->{
                try {
                    str =str + sql.split("VALUES")[1].replace(";",",");
    
                    if((i%2000)!=0 && i<=2097152) {
                        i++;
                    }else {
                        i++;
                        str= str.substring(0,str.length()-1);
                       // System.out.println(str);
                        PreparedStatement ps = conn.prepareStatement(str);
                        ps.executeUpdate();
                        str = "INSERT INTO `product_info` VALUES ";
                        conn.commit();
                    }
    
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
            br.close();
            conn.close();
    
            LocalDateTime now2 = LocalDateTime.now();
            System.out.println(now2);
    
        }
    }
    View Code

    2. SQL实现 

    LOAD DATA INFLIE;
    使用LOAD DATA INFLIE ,比一般的insert语句快20倍
    
    select * into OUTFILE 'D:\product.txt' from product_info
    
    load data INFILE 'D:\product.txt' into table product_info
  • 相关阅读:
    夯实Java基础系列5:Java文件和Java包结构
    夯实Java基础系列4:一文了解final关键字的特性、使用方法,以及实现原理
    夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!
    夯实Java基础系列1:Java面向对象三大特性(基础篇)
    走进JavaWeb技术世界16:极简配置的SpringBoot
    深入JavaWeb技术世界15:深入浅出Mybatis基本原理
    走进JavaWeb技术世界14:Mybatis入门
    走进JavaWeb技术世界13:Hibernate入门经典与注解式开发
    [转]ssm整合1(环境搭建)
    [转]基于S2SH框架的项目—antlr-2.7.2.jar包冲突问题
  • 原文地址:https://www.cnblogs.com/lys-lyy/p/11186603.html
Copyright © 2011-2022 走看看