使用 JDBC 进行批量插入的有效方法

2024-03-20

在我的应用程序中,我需要进行大量插入。它是一个 Java 应用程序,我使用普通 JDBC 来执行查询。数据库是Oracle。不过,我启用了批处理,因此它节省了执行查询的网络延迟。但查询作为单独的 INSERT 串行执行:

insert into some_table (col1, col2) values (val1, val2)
insert into some_table (col1, col2) values (val3, val4)
insert into some_table (col1, col2) values (val5, val6)

我想知道以下形式的 INSERT 是否更有效:

insert into some_table (col1, col2) values (val1, val2), (val3, val4), (val5, val6)

即将多个 INSERT 合并为一个。

还有其他使批量 INSERT 更快的技巧吗?


这是之前两个答案的混合:

  PreparedStatement ps = c.prepareStatement("INSERT INTO employees VALUES (?, ?)");

  ps.setString(1, "John");
  ps.setString(2,"Doe");
  ps.addBatch();

  ps.clearParameters();
  ps.setString(1, "Dave");
  ps.setString(2,"Smith");
  ps.addBatch();

  ps.clearParameters();
  int[] results = ps.executeBatch();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JDBC 进行批量插入的有效方法 的相关文章

随机推荐

  • Linux下与CashCode纸币接受器通信

    我已经实现了 CCNET 协议 以便通过 Linux 上的软件与 CashCode 纸币接受器进行通信 最初 我花了很多时间试图弄清楚为什么设备不响应 我发送的命令 使用反复试验的方法 我找到了为串行端口设置以下选项的解决方案 stty F
  • 我可以在不注销的情况下获得更新的 emailVerified 吗?

    我的注册流程如下 用户填写详细信息并注册 收到发送验证电子邮件 该用户登录后 但看到一个屏幕 要求进行电子邮件验证 用户验证他们的电子邮件并返回应用程序 在这个阶段我怎样才能获得新的用户数据emailVerified字段而不注销用户 我期望
  • Linux:大型 int 数组:mmap 与查找文件?

    假设我有一个数据集 它是存储在 4TB HDD ext4 文件系统上的文件中的 1e12 32 位整数 4 TB 数组 考虑到数据很可能是随机的 或者至少看起来是随机的 pseudo code for long long i 0 i lt
  • ElasticSearch 聚合可以做 SQL 可以做的事情吗?

    在 Elasticsearch 中 我需要获取从最高到最低出现最频繁的颜色的频率和数量 如果我有这样的数据 id name 1 blue 2 blue 3 green 4 yellow 5 blue 6 yellow 7 purple 8
  • 我可以将服务注入到 Grails 的过滤器中吗?

    我有一项服务可以在会话中获取和设置用户 如果有登录用户 我想将一些用户信息传递给每个视图 并认为过滤器是最好的方法 这样我就不必在每个控制器 操作中重复该信息 当我运行该应用程序时 出现以下错误 Error creating bean wi
  • 如何在所有字段名称中过滤 C# dataGridView?

    I see 在这个视频中 http www youtube com watch v 2h7C IL FB8添加文本框并让它驱动 datagridView 的过滤非常容易 问题在于该视频中 您似乎必须指定要根据哪一列进行过滤 RowFilte
  • 错误:“getGamesClient() 未定义” - 尝试运行 Google 的示例游戏

    我正在尝试运行 Google Game Play Services 示例here https github com playgameservices android samples tree master 8BitArtist 我已按照指示
  • 为温莎城堡中的所有接口实现注册拦截器

    我对温莎城堡相当陌生 特别是使用拦截器 我想知道是否可以在特定接口的所有实现中注册拦截器 而无需依次指定每个实现 例如 我有一个名为IComponent这将由许多班级实施 我有一个ComponentInterceptor编写的类在这些类执行
  • java中线程池的类型[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 java中的线程池有哪几种类型 我需要实现一个强大的多线程应用程序 该应用程序使用大量计算 我应该使用哪个线程池 java中有多种线程
  • 在 Spree (RoR) 中保存产品时,价格会乘以 100

    我在 Rails 3 1 3 和 Ruby 1 9 3 之上安装了在线购物框架 Spree 我还使用 Spree i18n gem 来本地化商店 现在 每当我保存产品时 价格都会乘以 100 例如 在管理区域中 我输入价格 3 20 结果是
  • String.split() *不*用于正则表达式?

    Since String split 使用正则表达式 这个片段 String s str str argh s split r 产量 s t s t a g h 分割这个字符串的最优雅的方法是什么r 序列 以便它产生 st st argh
  • Java EE7 中的多个 Web 套接字端点或单个 Web 套接字端点哪个更好

    Java EE 7 允许您通过注释非常轻松地创建新端点 但是 我想知道使用多个端点来处理每种消息类型是一个好主意 还是应该只使用一个端点外观来处理所有内容 我倾向于拥有一个单一端点外观 其理论基础是每个端点都会创建一个到客户端的新套接字连接
  • 如何在没有通用视图的 post_save_redirect 参数的情况下重定向到 Django 中新创建的对象

    我正在尝试将用户重定向到新创建的对象object get absolute url 保存表格后 我没有使用通用视图 所以我不能使用post save redirect争论 的相关部分view就像这样 if form is valid for
  • MemorySharp 设置地址偏移量不起作用

    好的 我正在使用MemorySharp用于读取 写入游戏内存的库 我的问题是 当我尝试将偏移量添加到基指针地址时 Visual Studio 在运行时会引发错误 这是基本代码 using var m new MemorySharp Appl
  • 无法比较飞行中的 ping 时间

    我尝试以下命令失败 sdiff lt ping www nato int lt ping www reuters com 有什么办法可以实时比较 ping 时间吗 通常我只是并排打开两个 xterm 然后在每个 xterm 中运行 ping
  • 使用可滚动结果集在休眠中批量读取数据

    我正在阅读一篇关于使用休眠进行批量获取的博客http java dzone com articles bulk fetching hibernate http java dzone com articles bulk fetching hi
  • 编译错误:Lambda 目标类型交集类型

    public class X Object o I J gt interface I public void foo interface J public void foo public void bar Oracle 编译器抛出错误 X
  • WCF服务路由,瓶颈?

    我们的应用程序服务器体系结构经过设置 以便每个服务调用都经过自定义构建的 WCF 服务路由器 一个使用请求消息标头中嵌入的信息将传入请求分发到适当服务的服务 我们在使用此 WCF 服务路由器时遇到性能问题 对并发用户进行负载测试时超时 我们
  • WinRT 中的应用程序间通信

    Windows 8 上有两个 WinRT 应用程序 C Xaml 如果有的话 第一个应用程序应该接收一些数据并将其发送到第二个应用程序中 最好的方法是什么 可以使用WCF吗 编辑 第一个应用程序知道第二个应用程序 实际上第二个应用程序是一个
  • 使用 JDBC 进行批量插入的有效方法

    在我的应用程序中 我需要进行大量插入 它是一个 Java 应用程序 我使用普通 JDBC 来执行查询 数据库是Oracle 不过 我启用了批处理 因此它节省了执行查询的网络延迟 但查询作为单独的 INSERT 串行执行 insert int