抱歉,我再次发布此内容,但很多要求已更改,我需要建议。
我的第一个输入文件是
Root1 TBLA KEY1 COLA A B
Root1 TBLA KEY1 COLB D E
Root1 TBLA KEY3 COLX M N
Root2 TBLB KEY4 COLX M N
Root2 TBLB KEY4 COLD A B
Root3 TBLC KEY5 COLD A B
我的第二个输入文件是
Root1 TBLA KEY6
Root2 TBLB KEY7
Root3 TBLC KEY8
我的第三个输入文件是
Root1 TBLA KEY9
Root1 TBLA KEY10
Root3 TBLC KEY11
基本上文件表示是
1) 第一个文件表示旧值和新值。首先是根表,其次是存在差异的实际表。第三列告诉键值。第四和第五代表新旧价值。
2)第二个文件代表只存在于db1中而不存在于db2中的主键。首先是根表,其次是存在键的实际表。第三列告诉键值
3) 第三个文件代表主键,它只存在于 db2 中,不存在于 db1 中。首先是根表,其次是存在键的实际表。第三列告诉键值
以 xml 格式创建的输出为
<Data>
<Root1>
<TBLA>
<NEW1>
<KEY>KEY6</KEY>
<NEW1>
<NEW2>
<KEY>KEY9</KEY>
<KEY>KEY10</KEY>
<NEW2>
<MODIFIED>
<KEY name =KEY1>
<COLA>
<oldvalue>A</oldvalue>
<newvalue>B</newvalue>
</COLA>
<COLB>
<oldvalue>D</oldvalue>
<newvalue>E</newvalue>
</COLB>
</KEY>
<KEY name =KEY3>
<COLX>
<oldvalue>M</oldvalue>
<newvalue>N</newvalue>
</COLX>
</KEY>
</MODIFIED>
</TBLA>
</Root1>
<Data>
这不是完整的输出。显示部分输出 任何人都可以建议最好的方法是什么。我应该先将此文本文件转换为哈希值,然后再尝试使用pltoxml()
. 这有意义吗?可以XML::Simple
或XML::Writer
足够了。
这是我第一次使用 xml 并且不确定哪种方法可以有效地帮助我的解决方案。
我的请求的一个小例子将不胜感激。
*输入文件将始终按 Root 排序,然后按 TBLNAME
输出格式
输出包含每个根、该根中的每个表以及每个表的输出,其中一个存在于一个中的键,然后仅存在于第二个中的键。这分别出现在 new1 和 new2 部分。第三部分包含 Modified 需要从第一个输入文件中读取并列出键值以及使用该键值修改哪些列(它们的旧值和新值)
如果我必须使用 XML::Simple,我如何从这些文件创建 hashref,我可以将其传递给 XMLout。这些文件中没有任何密钥。