如何比较 SQL 文件和包在 Python 和 return 中的真假?
How to compare SQL files and Packages in Python and return True or False?
因此,我尝试使用来自 difflib 的 Differ 和 filecmp。这是我到目前为止所做的:
def comparesqlpkg(pkg1Name, pkg2Name):
d = Differ()
if d.compare(open(pkg1Name, 'r').readlines(), open(pkg2Name, 'r').readlines()):
#if filecmp.cmp(pkg1Name, pkg2Name):
print("SAME content.")
return True
else:
print("DIFFERENT content.")
return False
我想让代码检查这两个文件,看看它们是否相同 return True/False。问题是在 Oracle 端可能会发生一些重新格式化,这会修改第二个文件的格式。我需要它以这样一种方式来忽略它,以便 运行 相同代码(不同的制表符空格等)的两个脚本仍会产生相同的结果。
示例 SQL1(本地存储库):
function fn_get_number(
in_src_amt in varchar2)
RETURN NUMBER;
示例 SQL2(由 ORACLE 数据库重新格式化):
FUNCTION FN_GET_NUMBER
(
IN_SCR_AMT IN VARCHAR2
)
RETURN NUMBER;
删除所有空格和换行符,转换为小写,然后进行比较。
def transform(s):
return s.replace(' ','').replace('\n','').lower()
...
if transform(open(pkg1name,'r').read()) == transform(open(pkg2name,'r').read()):
因此,我尝试使用来自 difflib 的 Differ 和 filecmp。这是我到目前为止所做的:
def comparesqlpkg(pkg1Name, pkg2Name):
d = Differ()
if d.compare(open(pkg1Name, 'r').readlines(), open(pkg2Name, 'r').readlines()):
#if filecmp.cmp(pkg1Name, pkg2Name):
print("SAME content.")
return True
else:
print("DIFFERENT content.")
return False
我想让代码检查这两个文件,看看它们是否相同 return True/False。问题是在 Oracle 端可能会发生一些重新格式化,这会修改第二个文件的格式。我需要它以这样一种方式来忽略它,以便 运行 相同代码(不同的制表符空格等)的两个脚本仍会产生相同的结果。
示例 SQL1(本地存储库):
function fn_get_number(
in_src_amt in varchar2)
RETURN NUMBER;
示例 SQL2(由 ORACLE 数据库重新格式化):
FUNCTION FN_GET_NUMBER
(
IN_SCR_AMT IN VARCHAR2
)
RETURN NUMBER;
删除所有空格和换行符,转换为小写,然后进行比较。
def transform(s):
return s.replace(' ','').replace('\n','').lower()
...
if transform(open(pkg1name,'r').read()) == transform(open(pkg2name,'r').read()):