如何快速的插入 100W数据到数据库,使用PreparedStatement 最快实现!

有时候,我们使用数据库的时候,如何快速的添加测试数据到数据库中,做测试呢,添加100W 数据,如果使用工具的话可能很慢,这里我推荐大家使用 PreparedStatement 预编译 去进行操作:
单线程操作 ,测试 只需要 20秒 如果字段少的话,可以到几秒钟插入100w数据

 public static void main(String[] args) {

        long start = System.currentTimeMillis();
        conn();
        long end = System.currentTimeMillis();
        System.out.println("耗时:" + (end - start)/1000 + "秒");
    }

    public static void conn(){
        //1.导入驱动jar包
        //2.注册驱动(mysql5之后的驱动jar包可以省略注册驱动的步骤)
        //Class.forName("com.mysql.jdbc.Driver");
        //3.获取数据库连接对象
        Connection conn = null;
        PreparedStatement pstmt = null;
        {
            try {
                //"&rewriteBatchedStatements=true",一次插入多条数据,只插入一次
                conn = DriverManager.getConnection("jdbc:mysql://134.175.66.149:3306/test?" + "&rewriteBatchedStatements=true&serverTimezone=UTC","root","B5IWfkqW8uu36J");
                //4.定义sql语句
                String sql = "insert into user values(default,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
                //5.获取执行sql的对象PreparedStatement
                pstmt = conn.prepareStatement(sql);
                //6.不断产生sql
                for (int i = 0; i < 1000000; i++) {
                    pstmt.setString(1,(int)(Math.random()*1000000)+"");
                    pstmt.setString(2,(int)(Math.random()*1000000)+"");
                    pstmt.setString(3,(int)(Math.random()*1000000)+"");
                    pstmt.setString(4,(int)(Math.random()*1000000)+"");
                    pstmt.setString(5,(int)(Math.random()*1000000)+"");
                    pstmt.setString(6,(int)(Math.random()*1000000)+"");
                    pstmt.setString(7,(int)(Math.random()*1000000)+"");
                    pstmt.setString(8,(int)(Math.random()*1000000)+"");
                    pstmt.setString(9,(int)(Math.random()*1000000)+"");
                    pstmt.setString(10, DateUtil.now());

                    pstmt.setString(11,(int)(Math.random()*1000000)+"");
                    pstmt.setString(12,DateUtil.now());
                    pstmt.setString(13,(int)(Math.random()*1000000)+"");
                    pstmt.setString(14,(int)(Math.random()*1000000)+"");
                    pstmt.setString(15,(int)(Math.random()*1000000)+"");
                    pstmt.setString(16,(int)(Math.random()*1000000)+"");
                    pstmt.setString(17,(int)(Math.random()*1000000)+"");
                    pstmt.setString(18,(int)(Math.random()*1000000)+"");
                    pstmt.setString(19,(int)(Math.random()*1000000)+"");
                    pstmt.setString(20,(int)(Math.random()*1000000)+"");
                    pstmt.addBatch();
                }
                //7.往数据库插入一次数据
                pstmt.executeBatch();
                System.out.println("添加1000000条信息成功!");

            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                //8.释放资源
                //避免空指针异常
                if(pstmt != null) {
                    try {
                        pstmt.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }

                if(conn != null) {
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        }

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用以下步骤快速将文本文件的内容插入数据库中: 1. 首先需要连接数据库。如果你使用的是 MySQL 数据库,可以使用 JDBC 连接。你需要下载 MySQL Connector/J 驱动程序,并在代码中引入该驱动程序。 2. 创建一个表格,用于存储文本文件的内容。你可以按照自己的需要创建表格,但是至少需要包含一个文本字段,用于存储文本内容。 3. 使用 Java 读取文本文件的内容。你可以使用 BufferedReader 类来读取文件。使用 readLine() 方法可以一次读取一行文本。 4. 将读取到的文本内容插入数据库中。你可以使用 PreparedStatement 类来执行 SQL 语句。使用 setString() 方法可以将文本内容插入到 SQL 语句中。 以下是一个简单的示例代码: ```java import java.io.BufferedReader; import java.io.FileReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class InsertTextFileToDatabase { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "password"; String filePath = "textfile.txt"; try (Connection conn = DriverManager.getConnection(url, username, password); BufferedReader br = new BufferedReader(new FileReader(filePath))) { String line; String sql = "INSERT INTO textfiles (content) VALUES (?)"; PreparedStatement pstmt = conn.prepareStatement(sql); while ((line = br.readLine()) != null) { pstmt.setString(1, line); pstmt.executeUpdate(); } System.out.println("Text file inserted to database."); } catch (Exception ex) { ex.printStackTrace(); } } } ``` 在这个例子中,我们首先连接到了名为 "mydatabase" 的 MySQL 数据库。我们创建了一个名为 "textfiles" 的表格,其中包含一个名为 "content" 的字段,用于存储文本内容。 我们使用 BufferedReader 类读取名为 "textfile.txt" 的文本文件的内容。我们使用 PreparedStatement 类执行 SQL 语句,将文本内容插入到 "textfiles" 表格中的 "content" 字段中。 最后,我们输出一条消息,表示文本文件已经插入数据库中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值