可以在sql之外使用python和csv验证的列的校验和算法

oaxa6hgo  于 2021-08-01  发布在  Java
关注(0)|答案(0)|浏览(173)

我需要一个算法或方法来计算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伪代码中的高级实现。

  1. def is_likely_equal(csv_filename, column_name):
  2. column_data = get_column_data(csv_filename,column)
  3. # I know it won't fit in memory this is an example
  4. python_b_sum = get_b_sum(column_data)
  5. sql_b_sum = some_db.execute("SELECT SUM(BINARY_CHECKSUM(column_name)) FROM table")
  6. if python_b_sum == sql_b_sum:
  7. return True
  8. else:
  9. return False
  10. def get_b_sum(column_data):
  11. b_sum = 0
  12. for entry in column_data:
  13. b_sum += b_checksum(entry)
  14. return b_sum

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题