我有一个xml文件,其中包含来自VistaDB数据库中各个表的数据,我希望使用该文件将数据传输到另一个VistaDB数据库中。
新数据库的模式略有不同,因为很明显,当时看来是一种明智的数据结构(基于继承),可以在多个主题领域进行进一步扩展,但这种做法并不可行。
结果是xml文件包含代表从这些表中收集的数据的部分,如下所示;
<?xml version="1.0" encoding="utf-8"?>
<RootElement>
<Contact>
<Oid>eeeba14b-ee5e-4051-aaea-686a4d79820e</Oid>
<ContactNumber>CON0000003</ContactNumber>
<ContactType>3</ContactType>
<DefaultCurrency>0</DefaultCurrency>
</Contact>
<ContactBase>
<Oid>eeeba14b-ee5e-4051-aaea-686a4d79820e</Oid>
<CurrentBalance>-2757.52</CurrentBalance>
<FirstInvoiceDate>2016-01-01T00:00:00+00:00</FirstInvoiceDate>
<LastInvoiceDate>2019-04-18T15:48:51.7242817+01:00</LastInvoiceDate>
</ContactBase>
<CommonBase>
<Oid>eeeba14b-ee5e-4051-aaea-686a4d79820e</Oid>
<IsActive>true</IsActive>
<ContactBusinessName>Fred Flintstone</ContactBusinessName>
</CommonBase>
</RootElement>
有没有一种简单的方法,也许可以使用一个我不太熟悉的XQuery之类的方法,使用一个文件中的公共共享Oid元素将这些独立的部分有效地合并为一个部分,或者会更容易只需将它们分离成新鲜的xml文件,然后合并它们,这是我熟悉并且可以做到的做法?
答案 0 :(得分:1)
以下是在XQuery 3.1中使用group by
的示例:
<RootElement>
{
for $contact in RootElement/*
group by $oid := $contact/Oid
return
<Contact>
{
head($contact)/Oid,
$contact/(* except Oid)
}
</Contact>
}
</RootElement>