【发布时间】:2021-03-15 07:57:08
【问题描述】:
我的目标是将多个数据库中的多个表与另一个数据库中的一个表进行比较(我们称之为基表)。
每个表都有一个 ID 和一个版本。我想检查基表的条目是否都是最新的并在所有其他表中同步(只需检查其他表中是否存在 ID 和 VERSION,忽略其他列)。我想尽可能高效地比较它们(不是查询所有数据并将其保存在内存中),因为有超过 150k 的数据条目。
这发生在 python scipt 中,我正在使用 cx_Oracle。
我的第一次尝试是从基表中查询 ID 和版本,使用游标逐行获取。但随后我将不得不在其他表中创建 150k+ 选择,这将是无能的。有谁知道两者如何有效地比较它们?
代码如下:
schemas = ["x","y","z"]
baseConn = cx_Oracle.connect(CONN TO DATABASE1)
baseCursor = conn.cursor()
baseCursor.execute("SELECT ID, Version FROM XXX")
res = cursor.fetchall()[0][0]
icc_count = int(res)
for schema in schemas:
conn = cx_Oracle.connect(CONN TO DATABASE2)
cursor = conn.cursor()
cursor.execute("SELECT ID, VERSION FROM " + schema)
# compare data of baseCursor and cursor here...
cursor.close()
conn.close()
baseCursor.close()
baseConn.close()
【问题讨论】:
-
你可以使用 DB Links,这样就不必将数据传输到 Python 所需的范围之外吗?有什么方法可以计算和比较数据值的哈希值吗?别忘了调
arraysize,见cx-oracle.readthedocs.io/en/latest/user_guide/tuning.html -
不,不应使用数据库链接。谢谢:)
标签: python oracle python-2.7 cx-oracle