python - Informix 连接速度 - Informatica PowerCenter 与 Python by JDBC

标签 python jdbc informix informatica

我在 Informatica Powercenter 中有一个工作流程,用于在 Informix 和 Oracle 之间传输数据。 Informatica 需要大约 20 秒来完成这项工作(6 个表,按当前日期过滤每日更新)。

我尝试使用 JDBC 在 Python 中实现相同的目标...但这种方式非常慢...

例如,这些表中的第一个 - 每天大约 100000 行 - 在 Python 中,即使提取 10000 行也需要大约一分钟。

Informatica 速度这么快,这正常吗?我可以以某种方式加速我的 Python 脚本吗?

示例:

import jaydebeapi
conn = jaydebeapi.connect("com.informix.jdbc.IfxDriver",
                           "jdbc:informix-sqli://server:port/cms:INFORMIXSERVER=x;user=x;password=x",
                           ["chancel", "chancel"],
                           r"C:\app\informix-jdbc-complete-4.50.4.1.jar")

curs = conn.cursor()
curs.execute("select * from table")
curs.fetchall()

最佳答案

多种因素可能是“为什么 Informatica 速度更快”的原因 -

  1. Informatica 可以使用 Oracle 或 Informix 驱动程序等 native 驱动程序直接连接到服务器。这些比 JDBC 驱动程序快得多。
  2. Informatica 使用多线程连接到源、进行转换并加载到目标中,因此它比 Python(遵循过程方法)更快。
  3. Informatica 是为此类 ETL 构建的,因此它是针对任何 ETL 类型操作的优化工具 - 内存和流程优化。当数据量较大时,您可以控制内存参数。它还可以创建索引等以使加载速度更快。
  4. Python 不适用于较大的表处理,因为它需要将所有内容保存在内存中,并且还需要强大的 CPU。

关于python - Informix 连接速度 - Informatica PowerCenter 与 Python by JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74168992/

相关文章:

java - 是否可以检查 Informix 表是否有主键

python - 对 pandas 中的交叉表数据进行排序以获得更多集群热图

java - 使用java将数据从mysql数据库复制到其他mysql数据库

sql - 如何在不单独指定的情况下对所有列的 SQL 结果进行排序?

java - 如何使用 OOP 概念使用 ArrayList 对象将值传递到数据库

java - 如何使用MySQL准备语句缓存?

Python正则表达式问题 - 子字符串但不带前缀

python - 如何使用官方 python IDLE 安装 NumPy?

python - app开发者应该如何使用setup.py和requirements.txt?