Procurando por uma boa inserção em massa XML Shredding exemplo para SQL 2005
-
03-07-2019 - |
Pergunta
Um pouco de ajuda necessário. Estou recebendo um arquivo XML semelhante a esta:
<?xml version="1.0" encoding="utf-16"?>
<dc:GRANTEE xsi:schemaLocation="http://www.blahblahblah.com/FullSchema test.xsd " xmlns:dc="http://www.blahblahblah.com/FullSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RPGID>90CU0024</RPGID>
<PLANID>01</PLANID>
<CASE>
<CASEID>100001</CASEID>
<RPGID>90CU0024</RPGID>
<FILE_O>2008-02-08T00:00:00</FILE_O>
<ADULT>
<ADULTID>100001A1</ADULTID>
<CASEID>100001</CASEID>
<APRIMARY>1</APRIMARY>
<ARLTNSHP>BM</ARLTNSHP>
<ADOB>1978-12-03T00:00:00</ADOB>
<ARACAI>1</ARACAI>
<ASEX>2</ASEX>
<SATX>
<SATXID>MD2120378</SATXID>
<ADULTID>100001A1</ADULTID>
<SAASSESS>2008-02-22T00:00:00</SAASSESS>
<PUBPRVTX>1</PUBPRVTX>
<TXADMIT>2008-02-23T00:00:00</TXADMIT>
<TXSET>5</TXSET>
</SATX>
</ADULT>
<CHILD>
<CHILDID>100001C1</CHILDID>
<CASEID>100001</CASEID>
<CINDEX>1</CINDEX>
<CHBDATE>2008-02-05T00:00:00</CHBDATE>
<CHSEX>1</CHSEX>
<CHRACAI>0</CHRACAI>
<MALTX>
<MALTXID>10000023</MALTXID>
<CHILDID>100001C1</CHILDID>
<RPTDT>2008-02-05T00:00:00</RPTDT>
<CHMAL1>2</CHMAL1>
</MALTX>
</CHILD>
</CASE>
O que eu preciso fazer é importá-lo e destrui-lo para tabelas com uma proc armazenado. Eu fui incapaz de encontrar qualquer coisa diferente de regurgitação geral dos exemplos nos livros on-line, uh, online. O que eu preciso é um pouco de sintaxe walk-through que mostra como eu posso em massa inserir o arquivo (usando OPENROWSET?) e, em seguida, tomar todos os dados e dividi-lo para combinar tabelas mantendo chaves. Parece que ele deve ser fácil, mas o material de referência é apenas difícil de encontrar. Eu também tenho acesso ao esquema se eu precisar disso e pode anotar também.
Alguém tem uma referência boa?
Solução
Você pode usar a instrução BULK INSERT com a palavra chave RAW para carregar os dados em uma tabela com uma única coluna. Ele vai colocar todo o documento em uma única linha. Em seguida, consultar a tabela e colocar os dados em uma variável com um tipo de dados XML.
Este post mostra como obter dados para fora do documento XML.