使用 perl 和 DBI 将非常大的表从一个 DB2 复制到另一个 DB2

2024-01-11

我每天需要将一个非常大(数百万行)的表从一个 DB2 数据库复制到另一个 DB2 数据库,并且我需要使用 perl 和 DBI。

有没有比简单地从第一个数据库中获取每一行并将它们逐一插入到第二个数据库中更快的方法?这是我得到的:

$sth1 = $udb1 -> prepare($read_query);
$sth1 -> execute();
$sth1 -> bind_columns(\(@row{@{$sth1 -> {NAME_1c}}}));

$sth2 = $udb2 -> prepare($write_query);

while ($sth1 -> fetchrow_arrayref) {
    $sth2 -> execute($row{field_name_1}, $row{field_name_2});
}

我从类似的线程实现了一些解决方案,但仍然很慢。当然必须有更好的方法吗?


如果将其包装到一个事务中,它的工作速度应该会快得多。 使用这样的东西:

$sth1 = $udb1->prepare($read_query);
$sth1->execute();
$sth1->bind_columns(\(@row{@{$sth1->{NAME_1c}}}));

$udb2->begin_work();
$sth2 = $udb2->prepare($write_query);
while ($sth1->fetchrow_arrayref()) {
    $sth2->execute($row{field_name_1}, $row{field_name_2});
}
$udb2->commit();

如果您有数百万行,您可能需要每几千行执行一次提交。

现在,它更快的原因是:

在您的情况下,每个插入都是一个自动提交的事务。换句话说,服务器必须等待,直到您的数百万行中的每一行的更改真正刷新到磁盘 - 非常慢!

当您将其包装到事务中时,服务器可以一次将数千行刷新到磁盘 - 更加高效和快速。

(如果您一遍又一遍地复制完全相同的表,那么通过某种唯一键同步更改会更明智 - 应该快一百万倍)。

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

使用 perl 和 DBI 将非常大的表从一个 DB2 复制到另一个 DB2 的相关文章

  • 单个查询删除并显示重复记录

    采访中提出的问题之一是 一张表有100条记录 其中 50 个 是重复的 是否可以用单个 查询删除重复记录 从表中以及选择和 显示剩余 50 条记录 这可以在单个 SQL 查询中实现吗 Thanks SNA 对于 SQL Server 你会使
  • Spring Service @Transactional 不回滚事务 Mybatis SqlSession

    目标是在失败时回滚所有 任何事务 但这并没有按预期工作 我们使用Spring MVC JMS Service Mybatis 在日志中 JMS 设置为回滚 但行已插入且未回滚 想知道我错过了什么或做错了什么吗 最近添加了 Transacti
  • MySQL Tinybit(1) 通过视图的列

    我有一个连接 2 个表的视图 其中一个表具有表示布尔值的tinyint 1 类型的列 该表在连接时并不总是有条目 因此当行丢失时视图需要采用 0 false 值 我希望视图公开 TINYINT 1 类型且 NOT NULL 类型的列 因为它
  • 从 Presto 中的 JSON 列获取特定值

    我有一个带有 JSON 列的表points其中一行为 0 0 2 1 1 2 2 0 5 15 1 2 20 0 7 我想获取键的值 1 and 20 并将它们存储为别名 例如first and second在查询中 到目前为止我所做的是
  • 处理大数据表时应该如何使用Hibernate Mapping

    问题定义 我有一个包含大量数据 超过 100 000 行 的数据库表 表结构如下 AppID DocID DocStatus 1 100 0 1 101 1 2 200 0 2 300 1 每个 applicationID 可能有数千个文档
  • 火鸟删除速度很慢

    我正在做这个简单的交易 DELETE FROM ominve01 WHERE CVE OBS IN SELECT CVE OBS FROM minve01 M WHERE M FECHA DOCU lt 31 12 2010 OR FECH
  • 内连接 3 个表

    我正在使用 PHP 和 PDO 我需要重新收集连接 3 个表的信息 photos albums 相册照片 该表具有以下结构 photos photo id int path varchar nick varchar date timesta
  • 什么是更好的?子查询或内连接十个表?

    一个旧系统已抵达我们的办公室进行一些更改和修复 但它也存在性能问题 我们并不确切知道这种缓慢的根源是什么 当我们重构旧代码时 我们发现了几个具有以下模式的 sql 查询 出于示例目的 简化了查询 SELECT SELECT X FROM A
  • 在 Oracle 中如何将多行组合成逗号分隔的列表? [复制]

    这个问题在这里已经有答案了 我有一个简单的查询 select from countries 结果如下 country name Albania Andorra Antigua 我想在一行中返回结果 如下所示 Albania Andorra
  • 总结同一个 SQL 表上的两个条件

    给定一个 SQL 表 Transactions ID INT COMPANY ID INT STATUS INT where STATUS IN 0 1 表示免费交易并且STATUS IN 2 3 表示可计费交易 简单的 我希望 ANSI
  • 如何获取 GROUP_BY 子句中的值列表?

    如果我的表中有这样的数据 id data 1 1 1 2 1 3 2 4 2 5 3 6 3 4 如何在查询 在 sybase 服务器上 中获得这样的结果 id data 1 1 2 3 2 4 5 3 6 4 在mysql中 使用 SEL
  • Mysql UUID_SHORT() 与 UUID() 相当吗

    如果您愿意的话 请快速提出问题或意见 我需要为数据库表生成一些 UUID 自动递增密钥不会减少它 因为我还需要密钥在数据库和系统中保持唯一 UUID 工作正常 但其输出对于行将导出到的某些系统来说太长 UUID SHORT 做得很好 我已经
  • T-SQL 平均值四舍五入到最接近的整数

    我不确定以前是否有人问过这个问题 但是如何在 T SQL 中将平均值四舍五入到最接近的整数 这应该可以做到 根据您要寻找的平均值 您可能需要在末尾使用 GROUP BY SELECT CONVERT int ROUND AVG Column
  • 为什么 Perl 的 LWP 给我的编码与原始网站不同?

    可以说我有这个代码 use strict use LWP qw get my content get http www msn co il print STDERR content 错误日志显示类似 xd7 x9c xd7 x94 xd7
  • SQL查询从表的每条记录生成多条记录

    我有一个包含 3000 条记录的表 使用其中的每一条记录 我必须生成大约 200 条记录 总共 600k 条记录 并通过 SQL Server 2012 将它们插入到第二个表中 我尝试使用 VBA 执行此操作 从第一个表中选择数据 计算 然
  • 当有“拥有”时,为什么你有“哪里”[重复]

    这个问题在这里已经有答案了 我知道这个问题已经被讨论了很多 但我的研究都无法让我相信 where and havingMySQL 中的 子句 据我了解 我们可以使用 where 子句实现所有可以完成的操作having 例如 select f
  • 哪个 SQL 查询返回每个唯一 A 列的具有最新日期和时间(B 列和 C 列)的行?

    哪个 SQL 查询返回每个唯一 A 列的具有最新日期和时间 B 列和 C 列 的行 If C实际上是一个datetime带日期的列and设置时间信息 可以 select a max c from table group by a If B
  • T-SQL参数嗅探重新编译计划

    我有 SQL 命令 exec sp executesql N SELECT TOP 10 FROM mytableView WHERE Name LIKE Value0 ORDER BY Id DESC N Value0 varchar 5
  • MySQL 查询按父级排序然后子级排序

    我的数据库中有一个页面表 每个页面可以有一个父页面 如下所示 id parent id title 1 0 Home 2 0 Sitemap 3 0 Products 4 3 Product 1 5 3 Product 2 6 4 Prod
  • SQL71501 - 如何消除此错误?

    我们在项目中使用两种模式 dbo kal 当我们尝试使用以下 SQL 语句创建视图时 Visual Studio 在错误列表中显示为错误 CREATE VIEW dbo RechenketteFuerAbkommenOderLieferan

随机推荐

  • AS3:文本字段焦点

    我正在尝试处理 TextField 上的焦点事件 以便在聚焦 选项卡或单击 时可以选择所有文本 看来我在这里做错了什么 txtTextField addEventListener FocusEvent FOCUS IN handleFocu
  • 将文本颜色和提示文本颜色设置为SearchView中的文本

    我想将文本颜色和提示文本颜色设置为 android support v7 widget SearchView 中的文本 该文本不在 ActionBar 中 也不在 Menu 选项中 我尝试了 stackoverflow 中提到的几种方法 但
  • 如何获取Linux上的非系统用户列表?

    考虑到所有用户id gt 1000是非系统用户 我们如何在单个命令中获取这些用户的列表 您需要获取所有用户gid大于或等于 1000 使用此命令 awk F 3 gt 1000 1 nobody print 1 etc passwd 如果你
  • Angular:vscode 中预期的表达式

    当我保存文件时 vscode 自动滚动到该随机行并指向 给出这个错误 我只是检查是否dateToComplete is null因为有时需要 我是否需要禁用 ts 的某些新功能 if this editMode this dateToCom
  • 为什么在 Selenium 中使用 add_experimental_option ?

    我试图理解与以下内容非常相似的代码片段 from selenium webdriver chrome options import Options chrome options Options port number 127 0 0 1 8
  • (Vue,ChartJS)从子组件画布上下文为图表创建渐变背景

    我想为我的图表提供渐变背景颜色 但我无法访问画布上下文 因为我的图表在我编写的包装器组件中呈现 What I want to achieve 我的实际包装看起来像这样
  • 使用 Java 解密由 .NET 的 RijndaelManaged 加密的字节

    我正在尝试解密一些东西 它是使用 NET C 的 RijndaelManaged 加密的 使用 Java 解密 C 程序不是我的 我无法将其更改为更具互操作性 但我知道它是如何加密的 byte bytes new UnicodeEncodi
  • 如何验证Java线程堆栈大小是否固定或有限?

    我试图验证 Java 堆栈大小是否固定 在开始时设置 或有限 增长到一定限制 我试图用一个简单的程序来测量这一点 该程序创建一定数量的线程 设置 Xss 但到目前为止我只发现 RSS 是每个进程的 并且出于明显的原因 知道堆大小在这里毫无意
  • Linq 完全外连接与数据表中的 NULL 记录 C#

    请问有人可以帮忙吗 我需要在 Extn In Call Records Extn Number 上返回一个表 如果任一侧不匹配 仍然返回一个计算 就像 SQL 完全外连接一样 我花了几个小时看这个 但无法让它工作 如果删除联合 我可以让代码
  • Monodroid - EditText 输入法不接受数字

    我在使用 Mono for Android 中的 EditText 控件时遇到一些非常奇怪的问题 我的解决方案针对的是 2 3 并且我正在 T Mobile VivaCity 上进行调试 这是我的 EditText 的 AXML
  • 如何阻止 git 在结账时破坏编码

    我最近使用以下设置将 gitattributes 文件添加到 c 存储库 text auto cs text diff csharp 我重新规范化了存储库按照 github 上的这些说明进行操作 https help github com
  • 更干净的元组 groupBy

    我有一系列键值对 String Int 我想按键将它们分组为值序列 即Seq String Int gt Map String Iterable Int 明显地 toMap在这里没有用 并且groupBy将值维护为元组 我想出的最好的办法是
  • Android Things:截图

    如何通过 ADB for Android Things 截屏 我努力了 adb shell screencap p sdcard screen png adb pull sdcard screen png adb shell rm sdca
  • Angular UI-Routing,页面刷新时自动重定向到父状态

    我正在开发一个使用 Angular UI 路由的项目 当我尝试刷新网页或直接输入 URL 时 它会被重定向到父状态 它确实加载了我重新加载的 URL 的状态 但随后快速重定向到父状态 这是我的状态路由 stateProvider state
  • 如何在 Objective C 中初始化一个空的可变数组

    我有一个对象 卡车 列表 其中包含填充表格视图的各种属性 当您点击它们时 它们会转到单独的卡车页面 有一个添加按钮 可以将它们添加到另一个表格视图中的收藏夹列表中 如何在 Cocoa 中初始化一个空的可变数组 我有以下代码 IBAction
  • bash脚本杀死超过一小时的php进程

    我有以下内容 kill 9 ps aux grep php awk 9 0 9 0 9 awk print 2 它的作用是杀死被 fcgid 放弃的进程并杀死它们以释放 RAM 我想每小时运行一次 cron 但想杀死早于一小时的进程 我只是
  • Textmate 到处检查拼写

    有什么方法可以检查我在 Textmate 中输入的所有单词的拼写吗 很难相信 但我实际上使用合法的英语单词来表示我的所有变量和类名 因此未突出显示的拼写错误简直要了我的命 如果有一种方法可以检查带有特殊字符的单词的拼写 那就太好了 uesr
  • 删除 PostgreSQL 中数字列的所有尾随零

    我有这张桌子properties其中有一个列atomic mass类型的NUMERIC 9 6 atomic mass 1 008000 4 002600 6 940000 9 012200 10 810000 12 011000 14 0
  • 如何访问类的静态成员?

    我正在尝试访问类的静态成员 我的班级是 class A public static strName A is my name public function xyz Since I have bunch of classes stored
  • 使用 perl 和 DBI 将非常大的表从一个 DB2 复制到另一个 DB2

    我每天需要将一个非常大 数百万行 的表从一个 DB2 数据库复制到另一个 DB2 数据库 并且我需要使用 perl 和 DBI 有没有比简单地从第一个数据库中获取每一行并将它们逐一插入到第二个数据库中更快的方法 这是我得到的 sth1 ud