我从遗留应用程序中收到一个固定格式的文件,该文件每天由 SQL 加载器加载到 oracle 表中。新需求需要比较第 1 天和第 2 天的文件,并且只附加差异,因此第 2 天结束时的数据看起来像第 1 天(初始加载)+ 第 2 天 - 第 1 天(仅更改)。
我正在使用下面的命令来找出两个文件之间的区别
比较对象 -referenceObject $(Get-Content $File1) -differenceObject $(Get-Content $File2) | %{$ .Inputobject + $ .SideIndicator} | 英尺-自动 | 输出文件 $fileDiff.txt -width 5000
compare-object 输出的第一行示例如下所示:
第4614章 32570544900721657
控制文件读取 infile 如下:
PER_ID POSITION(1:8) 字符由空白终止,
USER_ID POSITION(9:16) 字符由空白终止,
USER_ID_PREV POSITION(17:24) 字符由空白终止,
日志给了我一个丢弃所有记录的错误原因,如下所示:
记录 1:拒绝 - 表 PDB_EXPORT_DELTA 的 PER_ID 列出错。ORA-01722: 无效号码
我不确定这是否是由于 FileDiff.txt 不再是固定格式,或者 SQLLoader 不再将其识别为固定格式。
我对这两个方面都进行了研究,但没有发现任何关于 Compare-Object 保留或更改输出差异文件格式的内容,也没有看到任何关于 SQLLoader 控制文件中的类型转换值的内容。任何帮助深表感谢。也欢迎对实现上述要求的其他方法进行思考。TIA