【通过jdbc连接到kingbase数据库插入10w数据】

idea64通过jdbc连接到kingbase数据库

提前在数据库创建好表:

c 复制代码
CREATE TABLE test_table (
    id          INTEGER,
    name        VARCHAR(50),
    age         INTEGER,
    email       VARCHAR(100),
    phone       VARCHAR(20),
    address     VARCHAR(200),
    create_time TIMESTAMP,
    salary      NUMERIC(10,2),
    is_active   BOOLEAN,
    remark      TEXT
);

第一步:新建project项目

第二步:右键project然后点open Moudle Setting添加驱动

第三步:创建java类

内容如下:

c 复制代码
import java.sql.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Random;

public class BatchInsertDemo {
    // 数据库连接参数(请根据你的实际情况修改)
    private static final String URL = "jdbc:kingbase8://192.168.40.110:54321/db01?optimizeBatchedDML=true"; // 地址:端口/数据库名
    private static final String USER = "system";   // 数据库用户名
    private static final String PASSWORD = "123456"; // 数据库密码
    // 批量插入的 SQL 语句(使用占位符)
    private static final String INSERT_SQL = "INSERT INTO test_table (id, name, age, email, phone, address, create_time, salary, is_active, remark) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

    public static void main(String[] args) {
        // 记录开始时间
        long startTime = System.currentTimeMillis();
        // 1. 加载驱动(JDBC 4.0 以上可以自动加载,但为了保险,手动加载也可以)
        try {
            Class.forName("com.kingbase8.Driver");
        } catch (ClassNotFoundException e) {
            System.err.println("未找到 Kingbase JDBC 驱动,请检查 JAR 是否已添加!");
            e.printStackTrace();
            return;
        }
        // 2. 建立数据库连接
        try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD)) {
            // 关闭自动提交,以便手动控制事务
            conn.setAutoCommit(false);
            // 3. 创建 PreparedStatement 对象
            try (PreparedStatement pstmt = conn.prepareStatement(INSERT_SQL)) {
                Random random = new Random();
                int batchSize = 1000; // 每 1000 条执行一次批量提交,防止内存溢出
                int totalCount = 100000; // 总共插入 10 万条
                for (int i = 1; i <= totalCount; i++) {
                    // 为占位符设置值(每个字段都生成随机或递增的数据)
                    pstmt.setInt(1, i);                               // id 从 1 开始递增
                    pstmt.setString(2, "用户" + i);                    // name
                    pstmt.setInt(3, 20 + random.nextInt(40));         // age 20~59 随机
                    pstmt.setString(4, "user" + i + "@example.com");   // email
                    pstmt.setString(5, "138" + String.format("%08d", random.nextInt(100000000))); // phone
                    pstmt.setString(6, "地址" + random.nextInt(1000)); // address
                    pstmt.setTimestamp(7, Timestamp.valueOf(LocalDateTime.now())); // create_time
                    pstmt.setBigDecimal(8, new java.math.BigDecimal(random.nextInt(10000) + 3000)); // salary 3000~12999
                    pstmt.setBoolean(9, random.nextBoolean());         // is_active
                    pstmt.setString(10, "备注信息" + i);                // remark
                    // 将当前参数添加到批处理中
                    pstmt.addBatch();
                    // 达到 batchSize 时执行批处理并清空批处理
                    if (i % batchSize == 0) {
                        pstmt.executeBatch();  // 执行批处理
                        conn.commit();         // 提交事务
                        System.out.println("已插入 " + i + " 条数据");
                    }
                }
                // 处理剩余不足 batchSize 的批次
                pstmt.executeBatch();
                conn.commit();
                long endTime = System.currentTimeMillis();
                System.out.println("批量插入完成!总耗时:" + (endTime - startTime) / 1000.0 + " 秒");
            } catch (SQLException e) {
                // 发生异常时回滚
                conn.rollback();
                System.err.println("插入数据时发生错误,已回滚!");
                e.printStackTrace();
            }
        } catch (SQLException e) {
            System.err.println("数据库连接失败!");
            e.printStackTrace();
        }
    }
}

pom.xml如下:

c 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>project-durid</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <!-- Spring JDBC 基础,如果使用Spring Boot,这个通常已包含 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- KingbaseES 驱动 -->
        <dependency>
            <groupId>com.kingbase8</groupId>
            <artifactId>kingbase8</artifactId>
            <version>8.6.0</version> <!-- 请根据你的数据库版本选择合适的版本 -->
        </dependency>
    </dependencies>
</project>

第四步运行:java类

运行即可

-----------注

当然也可以直接通过idea64工具连接数据库

右键点击database,添加驱动

然后连接数据库

填写连接信息

连接成功:

查询

相关推荐
毕设源码-朱学姐2 小时前
【开题答辩全过程】以 基于java的书店用户管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
gis分享者2 小时前
华为OD面试-Java、C++、Pyhton等多语言实现-目录
java·c++·华为od·面试·目录·od·机试
qwehjk20082 小时前
使用Seaborn绘制统计图形:更美更简单
jvm·数据库·python
于先生吖2 小时前
2026 新版上门回收系统源码 JAVA 同城服务平台搭建指南
java·开发语言
code_pgf2 小时前
Jetson Orin NX 16G设备上配置AI服务自动启动的方案,包括Ollama、llama-server和OpenClaw Gateway三个组件
数据库·人工智能·安全·gateway·边缘计算·llama
SelectDB2 小时前
doris404发版
大数据·数据库·数据分析
MX_93592 小时前
Spring整合Web环境实现思路
java·开发语言·后端·spring
SelectDB2 小时前
SelectDB search 函数
大数据·数据库·数据分析
2301_818419012 小时前
Python虚拟环境(venv)完全指南:隔离项目依赖
jvm·数据库·python