日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

JAVA高效批量插入数据到数据库demo

發(fā)布時間:2023/12/16 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA高效批量插入数据到数据库demo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、批量插入數據到sqlserver數據庫:10000條數數據平均耗時1800ms

public static void main(String[] args) {

????????PreparedStatement ps;

????????Connection con = getConnection();

????????String sql = "insert into t_s_log (ID,broswer,logcontent,loglevel,note, operatetime,operatetype,userid,username,realname) values(?,?,?,?,?,?,?,?,?,?)";

????????try {

????????????ps = con.prepareStatement(sql);

????????????List<TSLog> logList = getList();

????????????for (TSLog log : logList) {

????????????????ps.setString(1, log.getId());

????????????????ps.setString(2, log.getBroswer());

????????????????ps.setString(3, log.getLogcontent());

????????????????ps.setShort(4, log.getLoglevel());

????????????????ps.setString(5, log.getNote());

????????????????ps.setDate(6, new java.sql.Date(log.getOperatetime().getTime()));

????????????????ps.setShort(7, log.getOperatetype());

????????????????ps.setString(8, log.getUserid());

????????????????ps.setString(9, log.getUsername());

????????????????ps.setString(10, log.getRealname());

????????????????ps.addBatch();

????????????}

????????????long a = System.currentTimeMillis();

????????????ps.executeBatch();

????????????System.out.println("插入 " + logList.size() + " 條數據耗時 " + (System.currentTimeMillis() - a) + " 毫秒");

????????????con.commit();

????????????ps.clearBatch();

????????????ps.close();

????????} catch (SQLException throwables) {

????????????throwables.printStackTrace();

????????}

????}

????public static List<TSLog> getList() {

????????List<TSLog> logList = new ArrayList<>();

????????for (int i = 0; i < 10000; i++) {

????????????TSLog log = new TSLog();

????????????log.setId(UUID.randomUUID().toString().replaceAll("-", ""));

????????????log.setBroswer("Chrome");

????????????log.setLogcontent("測試");

????????????log.setLoglevel((short) 1);

????????????log.setNote("測試");

????????????log.setOperatetime(new Date());

????????????log.setOperatetype((short) 1);

????????????log.setUserid("402885af6745c5ae016745dfdb590014");

????????????log.setUsername("admin");

????????????log.setRealname("admin");

????????????logList.add(log);

????????}

????????return logList;

????}

????public static Connection getConnection() {

????????String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

????????String dbURL = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=xxx";

????????String userName = "xxx";

????????String userPwd = "xxx";

????????try {

????????????Class.forName(driverName);

????????????System.out.println("加載SQLServer驅動類成功!");

????????} catch (ClassNotFoundException a) {

????????????System.out.println("加載SQLServer驅動失敗!");

????????????a.printStackTrace();

????????}

????????Connection dbcon = null;

????????try {

????????????dbcon = DriverManager.getConnection(dbURL, userName, userPwd);

????????????System.out.println("數據庫連接成功!");

????????} catch (SQLException e) {

????????????System.out.println("數據庫連接失敗!");

????????????e.printStackTrace();

????????}

????????return dbcon;

????}

2、批量插入數據到mysql數據庫:10000條數數據平均耗時700ms

jdbc:mysql://127.0.0.1:3306/xxx&allowMultiQueries=true&rewriteBatchedStatements=true

public List<Object[]> initJDBCDemos() {

????????List<Object[]> demos = new ArrayList<>();

????????for (int i = 0; i < 10000; i++) {

????????????Object[] demo = new Object[11];

????????????demo[0] = i + "" + new Date();

????????????demo[1] = i + "name";

????????????demo[2] = i + "keyWord";

????????????demo[3] = new Date();

????????????demo[4] = BigDecimal.ONE;

????????????demo[5] = 1d;

????????????demo[6] = "1";

????????????demo[7] = 10;

????????????demo[8] = new Date();

????????????demo[9] = "fad@qq.com";

????????????demo[10] = "fad@qq.com";

????????????demos.add(demo);

????????}

????????return demos;

????}

????// jdbc批量插入

????@Test

????public void testJdbcInsert100000BatchSave() {

????????List<Object[]> jeecgDemoList = initJDBCDemos();

????????DruidDataSource dataSource = DynamicDBUtil.getDbSourceByDbKey("qyt-dd-sys");

????????JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

????????long a = System.currentTimeMillis();

????????String sql = "INSERT INTO ?`demo`( ?`id`, `name`,\n" +

????????????????"\t\t`key_word`,\n" +

????????????????"\t\t`punch_time`,\n" +

????????????????"\t\t `salary_money`,\n" +

????????????????"\t\t `bonus_money`,\n" +

????????????????"\t\t `sex`, `age`, `birthday`,\n" +

????????????????"\t\t ?`email`, `content`)\n" +

????????????????"\t\tVALUES (?,?,?,?,?,?,?,?,?,?,?)";

????????jdbcTemplate.batchUpdate(sql, jeecgDemoList);

????????System.out.println("處理" + jeecgDemoList.size() + "條數據耗時:" + (System.currentTimeMillis() - a) + "毫秒");

????}

總結

以上是生活随笔為你收集整理的JAVA高效批量插入数据到数据库demo的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。