Java(120):使用Java对TiDB数据库批量写入数据

使用Java对TiDB数据库批量写入数据

1、前言:

本次对TiDB数据库测试需要1w条数据,如果MySQL可用存储过程造数,结果发现TiDB用不了。只能想其他办法,一种是Java直接批量插入,一种是Jmeter插入。这里用的Java插入。

 如果是MySQL用存储过程,可参考:使用MySQL存储过程给表批量造数据_存储过程造数-CSDN博客

2、批量写入数据

2.1、说明:

1、首先url加上:?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&rewriteBatchedStatements=true&useConfigs=maxPerformance&useServerPrepStmts=true

2、使用批量插入,这里是总共插入10000条,一批次1000,10批次插入。

2.2、代码示例

import java.sql.*;
import java.util.Date;
/**
 * Description :
 *
 * @author : HMF
 * Date : Created in 15:00 2024/4/16
 * @version :
 */
public class tidbUtil {
    public Connection conn;

    public tidbUtil() {

        //直接过数据库tidb
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://10.1.1.16:4000/demo_hmf?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&rewriteBatchedStatements=true&useConfigs=maxPerformance&useServerPrepStmts=true";
        String user = "xxx";
        String password = "xxx";


        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, user, password);
            if (!conn.isClosed()) {
                System.out.println("数据库驱动:[" + driver + "],url:[" + url + "]");
                System.out.println("Open DB Connection success");
            }
        }catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }
    }

    public static void main(String[] args) {
        tidbUtil tb = new tidbUtil();
        try{
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        tb.batchInsert(10000,1000);

        tb.DBQuery("select * from USERS where ID=1");

        tb.DBQuery("select count(*) from USERS");
        System.exit(0);
    }

    public void batchInsert(int totalSize, int batchSize) {
        try {
            long start = System.currentTimeMillis();
            long time = start;
            long end ;
            String sql ="INSERT INTO USERS(ID,NAME,EMAIL,AGE,SEX,ID_CARD,MOBILE_PHONE,VISA_CARD,OFFICER_CARD,ADDRESS) values(?,'Penny','Penny@163.com',29,'女','131081197803061637',13663776677,'SYP618183458', '军字第00111209号', '北京市朝阳区立水桥北')";
            PreparedStatement ps = conn.prepareStatement(sql);
            for (int i = 1; i <= totalSize; i++)
            {
                ps.setObject(1, "" + i);
                ps.addBatch();
                if (i % batchSize == 0)
                {
                    ps.executeBatch();
                    ps.clearBatch();
                    end = System.currentTimeMillis();
                    System.out.println(new Date()+"本批次insert " + batchSize + "条,耗时" + (System.currentTimeMillis() - time) + "毫秒"+((batchSize*1000)/(end - time))+"条/秒");
                    time = end;
                }
            }
            end = System.currentTimeMillis();
            System.out.println("insert " + totalSize + "条总花费的时间:" + (end - start) + "毫秒 "+((totalSize*1000)/(end - start))+"条/秒");

            ps.close();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    void DBQuery(String sqlStr)  {
        try {
            Statement statement = conn.createStatement();
            ResultSet rs = statement.executeQuery(sqlStr);

            int columnCount = rs.getMetaData().getColumnCount();

            System.out.println("+++++ query sql: "+sqlStr);
            while(rs.next()){
                String result = "";
                for (int i=0; i<columnCount; i++) {
                    result += "\t" + rs.getString(i+1);
                }
                System.out.println(result);
            }
            rs.close();
            statement.close();
        }catch(Exception e) {
            e.printStackTrace();
        }
    }




}

2.3、执行结果:

参考:https://blog.csdn.net/shy_snow/article/details/125047226

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/548563.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CANoe中关于NetworkHardwareConfiguration中的setup设置参数的详解

前提说明 本文是以VN1640A中的CAN_FD工程为例&#xff0c;为大家讲解。 1&#xff1a;首先打开相关配置 重点讲解红色框中的参数&#xff0c;其他参数该如何设置&#xff0c;请参考我另外一篇文章“关于CANoe硬件及接口的学习笔记&#xff08;VN1640A&#xff09;”或自行查阅…

js 写 视频轮播

html代码 <div class"test_box"> <div class"test"> <a href"#"> <div class"test_a_box"> <div class"test_a_mask"></div> <div class"test_a_layer"> <div cla…

偏微分方程算法之混合边界差分

目录 一、研究对象 二、差分格式 2.1 向前欧拉格式 1. 中心差商 1.1.1 理论推导 1.1.2 算例实现 2. x0处向前差商&#xff0c;x1处向后差商 1.2.1 理论推导 1.2.2 算例实现 2.2 Crank-Nicolson格式 2.2.1 理论推导 2.2.2 算例实现 一、研究对象 这里我们以混合边界…

高分一号卫星(GF-1):中国遥感科技的骄傲

高分一号卫星&#xff08;GF-1&#xff09;是中国遥感科技领域的一项突破性成就&#xff0c;其引入了先进的成像技术和灵活的数据获取模式&#xff0c;为中国的资源管理、环境监测和城市规划等领域带来了巨大的变革。本文将深入介绍高分一号卫星的技术参数、成像能力以及应用场…

抽奖系统设计

如何设计一个百万级用户的抽奖系统&#xff1f; - 掘金 如何设计百万人抽奖系统…… 在实现抽奖逻辑时&#xff0c;Redis 提供了多种数据结构&#xff0c;选择哪种数据结构取决于具体的抽奖规则和需求。以下是一些常见场景下推荐使用的Redis数据结构&#xff1a; 无序且唯一奖…

解析数据科学,探索ChatGPT背后的奥秘

在当今这个由数据驱动和AI蓬勃发展的时代&#xff0c;数据科学作为一门融合多种学科的综合性领域&#xff0c;对于推动各行各业实现数字化转型升级起着至关重要的作用。近年来&#xff0c;大语言模型技术发展态势强劲&#xff0c;为数据科学的进步做出了巨大贡献。其中&#xf…

第四百六十二回

文章目录 1. 概念介绍2. 实现方法3. 示例代码4. 内容总结 我们在上一章回中介绍了"关于MediaQuery的优化"相关的内容&#xff0c;本章回中将介绍readMore这个三方包.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的readMore是一个…

新经济助推高质量发展“大有云钞”聚焦未来趋势

近日&#xff0c;由大有云钞科技&#xff08;北京&#xff09;有限公司主办的一场关于“新经济助力高质量发展法治研讨会”在北京国家会议中心隆重举行。此次研讨会汇聚了来自政府、企业、学术界和法律界的众多专家学者&#xff0c;共同探讨新经济背景下的法治建设和高质量发展…

Scrapy 框架基础

Scrapy框架基础Scrapy框架进阶 Scrapy 框架基础 【一】框架介绍 【1】简介 Scrapy是一个用于网络爬取的快速高级框架&#xff0c;使用Python编写他不仅可以用于数据挖掘&#xff0c;还可以用于检测和自动化测试等任务 【2】框架 官网链接https://docs.scrapy.org/en/late…

YesPMP平台 | 活动有礼,现金奖励点击领取!

YesPMP众包平台在线发福利啦&#xff0c;活动火热开启&#xff0c;现金奖励等你来领&#xff0c;最高可领千元&#xff0c;赶快参与将奖励收入囊中&#xff0c;一起来了解活动细节吧&#xff01; 一、活动内容&#xff1a; 活动一&#xff1a;【项目征集令】活动&#xff0c;…

二路归并排序的算法设计和复杂度分析(C语言)

目录 实验内容&#xff1a; 实验过程&#xff1a; 1.算法设计 2.程序清单 3.运行结果 4.算法复杂度分析 实验内容&#xff1a; 二路归并排序的算法设计和复杂度分析。 实验过程&#xff1a; 1.算法设计 二路归并排序算法&#xff0c;分为两个阶段&#xff0c;首先对待排…

Anaconda下的tensorflow安装

关于Anaconda的安装以及配置可以浏览我的上一篇博客Anaconda的安装与配置 下面是安装tensorflow的命令&#xff0c;使用下列指令安装前需要配置好CUDA&#xff0c;关于CUDA的配置在上一篇博客中有详细的步骤描述。 关于官方环境配置的要求可以浏览官网&#xff1a;https://t…

每帧纵享丝滑——ToDesk云电脑、网易云游戏、无影云评测分析及ComfyUI部署

目录 一、前言二、云电脑性能测评分析2.1、基本配置分析2.1.1、处理器方面2.1.2、显卡方面2.1.3、内存与存储方面2.1.4、软件功能方面 2.2、综合跑分评测 三、软件应用实测分析3.1、云电竞测评3.2、AIGC科研测评——ComfyUI部署3.2.1、下载与激活工作台3.2.2、加载模型与体验3.…

yolov8目标检测 部署瑞芯微rk3588记录

1. 前置条件 本地电脑系统&#xff0c;ubuntu20.04 训练代码&#xff1a; 训练代码下载的ultralytics官方代码 SHA&#xff1a;6a2fddfb46aea45dd26cb060157d22cf14cd8c64 训练代码仅做数据修改&#xff0c;类别修改&#xff0c;代码结构未做任何修改 需要准备的代码&#…

基于springboot+vue+Mysql的论坛管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

图深度学习(一):介绍与概念

目录 一、介绍 二、图的数据结构 三、图深度学习的基本模型 四、图深度学习的基本操作和概念 五、训练过程 六、主要应用场景 七、总结 一、介绍 图深度学习是将深度学习应用于图形数据结构的领域&#xff0c;它结合了图论的概念和深度学习的技术&#xff0c;用以处理和…

刷新认知,Python中循环结构可以这么简单?

应用场景 我们在写程序的时候&#xff0c;一定会遇到需要重复执行某条或某些指令的场景。例如用程序控制机器人踢足球&#xff0c;如果机器人持球而且还没有进入射门范围&#xff0c;那么我们就要一直发出让机器人向球门方向移动的指令。 在这个场景中&#xff0c;让机器人向…

大数据建模理论

文章目录 一、数仓概述1、数据仓库概念1.1 概述1.2 数据仓库与数据库的区别1.3 技术选型和架构 2、数仓常见名词2.1 实体2.2 维度2.3 度量2.4 粒度2.5 口径2.6 指标2.7 标签2.8 自然键/持久键/代理键2.9 退化维度2.10 下钻/上卷2.11 数据集市 3、数仓名词之间关系3.1 实体表&am…

这个项目我投了,给 OceanBase 数据库诊断提提速!

1. 前言 昨天晚上公司内部直播分享了一下OceanBase敏捷版诊断工具obdiag&#xff0c;主要的目的是拉齐一下前线和后端开发人员的诊断OceanBase问题的信息&#xff0c;众人拾柴火焰高&#xff0c;大家一起把obdiag做起来。晚上回去想了想&#xff0c;obdiag既然是开源项目&…

SiLM5350系列带米勒钳位的单通道隔离驱动器 助力汽车与工业应用实现稳定与高效的解决方案

带米勒钳位的隔离驱动SiLM5350系列 单通道 30V&#xff0c;10A 带米勒钳位的隔离驱动 具有驱动电流更大、传输延时更低、抗干扰能力更强、封装体积更小等优势, 为提高电源转换效率、安全性和可靠性提供理想之选。 SiLM5350系列产品描述&#xff1a; SiLM5350系列是单通道隔离驱…
最新文章