我需要一个算法或方法来计算sql列的校验和,在给定csv的python中很容易复制。
我想验证csv列和sql列是否匹配
我有一个方案,在sql端和python端将列中每行的二进制\u校验和相加为两个整体列和,但我担心冲突,我想知道是否有更快或更好的方法。
我需要一个函数,其中c是一个完整的sql列,这样 python_function(c) == pyquery("EXEC sql_function("some_table",c))
其中python\函数(c)和sql\列(c)返回哈希或校验和之类的内容
一个函数也不需要包含所有可能的c类型。不过,如果真的是这样的话,那就更好了。您可以给出一个特定于varchars、int或bytes等的方案。
csv将是大的,大约5000万行66列(varchar、int、bits、smallint、decimal、numeric)。
csv来自外部源,我需要验证它是否与数据库中的数据匹配。
不需要100%精确,缺少100000行以内的差异就可以了
作为一个例子,这里是我的解决方案在python伪代码中的高级实现。
def is_likely_equal(csv_filename, column_name):
column_data = get_column_data(csv_filename,column)
# I know it won't fit in memory this is an example
python_b_sum = get_b_sum(column_data)
sql_b_sum = some_db.execute("SELECT SUM(BINARY_CHECKSUM(column_name)) FROM table")
if python_b_sum == sql_b_sum:
return True
else:
return False
def get_b_sum(column_data):
b_sum = 0
for entry in column_data:
b_sum += b_checksum(entry)
return b_sum
暂无答案!
目前还没有任何答案,快来回答吧!