我在 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 速度更快”的原因 -
- Informatica 可以使用 Oracle 或 Informix 驱动程序等 native 驱动程序直接连接到服务器。这些比 JDBC 驱动程序快得多。
- Informatica 使用多线程连接到源、进行转换并加载到目标中,因此它比 Python(遵循过程方法)更快。
- Informatica 是为此类 ETL 构建的,因此它是针对任何 ETL 类型操作的优化工具 - 内存和流程优化。当数据量较大时,您可以控制内存参数。它还可以创建索引等以使加载速度更快。
- Python 不适用于较大的表处理,因为它需要将所有内容保存在内存中,并且还需要强大的 CPU。
关于python - Informix 连接速度 - Informatica PowerCenter 与 Python by JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74168992/