求助:对比SQL*Plus Spool生成的跨多行多列CSV并生成差异报表
对比两个格式不规范的CSV文件并生成差异报告
我需要对比两个CSV文件的行数据,以第一列CDCODE作为匹配记录的唯一键,最终生成包含以下列的输出文件(Excel或其他合适格式均可):
- CDCODE
- 列名
- 状态(取值为 MODIFIED / ADDED / DELETED)
- 旧值(来自第一个CSV文件)
- 新值(来自第二个CSV文件)
文件情况
- 第一个文件为"修改前"数据,约1815行,但因大量列跨多行存储,实际记录数少于行数。该文件由SQL*Plus Spool生成,格式不规范。
- 第二个文件约689行,两个文件的列结构完全一致。
列结构示例
CDCODE NUDOSS SOC PGPDOS CD CDR CDA T MTARSA T MTARPA RGCALC T T N T C T CD T CDR N CDR A R R E P P ECL ID IDA F F CDD T T T T CDS T T F F F IDPLAN F F F F F F F F F NBPAYP R R R IDGARN F F F S F TAX PEVCOT T A --------------- ---------- --- ---------- -- --- --- - ---------- - ---------- ---------- - - - - - - -- - --- - --- - - - - - - --- -- --- - - --- - - - - --- - - - - - ---------- - - - - - - - - - ---------- - - - ------ - - - - - --- -------- - - NUDOSS NULIGN NULIGS NULIGP T DATXXX SOC PGPDOS DAEFF CD CDA CDR NBEN01 NBEN02 NBEN03 CDMOT1 T CDE MONTA1 CDMOT2 T CDE MONTA2 CDMOT3 T CDE MONTA3 T CDMOT4 T CDE MONTA4 ---------- ---------- ---------- ---------- - ------------------- --- ---------- ------------------- -- --- --- ---------- ---------- ---------- -------- - --- ---------- -------- - --- ---------- -------- - --- ---------- - -------- - --- ---------- CDMOT5 T CDE MONTA5 CDMOT6 T CDE MONTA6 CDMOT7 T CDE MONTA7 CDMOT8 T CDE MONTA8 CDMOT9 T CDE MONTA9 CDMO10 T CDE MONT10 FORLIB -------- - --- ---------- -------- - --- ---------- -------- - --- ---------- -------- - --- ---------- -------- - --- ---------- -------- - --- ---------- --------------------------------------------------------- LICON ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- NUDOSS SOC PGPDOS COICRH NUDOSS NULIGN SOC PGPDOS CDA T S NUDOSS SOC PGPDOS CD CDR CDA T MTARSA T MTARPA RGCALC T T N T C T CD T CDR N CDR A R R E P P ECL ID IDA F F CDD T T T T CDS T T F F F IDPLAN F F F ---------- --- ---------- ------- ---------- ---------- --- ---------- --- - - ---------- --- ---------- -- --- --- - ---------- - ---------- ---------- - - - - - - -- - --- - --- - - - - - - --- -- --- - - --- - - - - --- - - - - - ---------- - - - F F F F F F NBPAYP R R R IDGARN F F F S F TAX PEVCOT T A NUDOSS SOC PGPDOS NUORGA CDCOMP T T T T T T T RG T T T T T T T T TEBULD T T RG RG T T T RG T TOLERA T IDFRPY MEMO01 MEMO02 MEMO03 MEMO04 MEMO0 - - - - - - ---------- - - - ------ - - - - - --- -------- - - ---------- --- ---------- -------- -------- - - - - - - - -- - - - - - - - - ---------- - - -- -- - - - -- - ---------- - -------- --------------- --------------- -------- -------- ----- MEMO0 MEMO0 MEMO0 MEM MEM MEM T F F F F F F CD CD CD CD CD CDPRC3 CDPRC4 CDPRC5 CDPROC IDFRP3 IDFRP4 IDFRP5 T PO F I NUDOSS NULIGN SOC PGPDOS CDCON DADEB DAFIN T T CDR CDR C T TXGENE ----- ----- ----- --- --- --- - - - - - - - -- -- -- -- -- -------- -------- -------- -------- -------- -------- -------- - -- - - ---------- ---------- --- ---------- ----- ------------------- ------------------- - - --- --- - - ---------- NUDOSS NULIGN SOC PGPDOS NUMELI COMMEN NUDOSS NULIGN SOC PGPDOS C LIBLON LIBABR ---------- ---------- --- ---------- -------- --------------------------------------------------------------- ---------- ---------- --- ---------- - --------------------------------------------- ------------------ LBCMP1 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- LBCMP2 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- LBCMP3 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- B NUDOSS NULIGN SOC PGPDOS QLRTYP QUALIF NUDOSS SOC PGPDOS DATDEB DATFIN ACT - ---------- ---------- --- ---------- --------------- --------------- ---------- --- ---------- ------------------- -------------------
目前无法再查询数据库,原"修改前"数据已无法通过数据库获取,只能使用现有文件,恳请提供技术解决方案。
内容的提问来源于stack exchange,提问作者MM.KI
相关产品推荐
相关产品推荐

