• 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
  • 相关阅读:
    list tuple dict 方法
    字典的方法
    看不懂的缩写
    canvas画图
    DOM2和DOM3
    表单脚本
    事件
    DOM扩展
    DOM
    BOM
  • 原文地址:https://www.cnblogs.com/lys-lyy/p/11186603.html
Copyright © 2020-2023  润新知