我有这个问题,我不知道如何解决。
首先,我已将XML数据导入到名为Sheet1
到列MENUXML
的SQL表中。 XML中的示例是:
<DADOSNOTAALTA titulo="Externa E6020731-INT NEFROLOGIA (27-10-2006*1:07:17 PM)" mostra="1" liga="novaalta.aspx?x=DADOSNOTAALTA" versao="1" data="27-10-2006" hora="1:09:05 PM" autor="CH" publica="" episodio="6020731" especialidade="SCI" interna="0">
<DTALTA titulo="Data da Alta" valor="27-10-2006, 12:59" />
<DESTINOT titulo="" valor="Consulta externa" />
<DESTINOD titulo="Obs:" valor="HGSA 31/10/2006" />
<MTADM titulo="" valor="DISFUNÇÃO ENXERTO RENAL
CREATININA 1,4 -2,2 AGORA 1,7" />
<RESUMO titulo="" valor="BIOPSIA RENAL - SINAIS DE NTA, SEM SINAIS NA MICROSC. ÓPTICA DE REJEIÇÃO AGUDA
 C4D POSITIVO PERI-TUBULAR" />
<DIAGNO titulo="" valor="Transplante com rim de dador cadáver COM DISFUNÇÃO TRANSITÓRIA.
Transplante pâncreas
" />
<TRATAM titulo="" valor="Tacrolimus 5 + 4 mg, 12/12 horas
Sirolimus 2mg dia
Prednisolona 20mg, manhã
Valganciclovir 450mg
Omeprazol 20 mg dia
Bactrim 1 compr./dia
Epo B 6000 / 2 vezes /semana SC.
Ácido acetilsalicílico 100mg dias alternados
Carbonato de cálcio 2 gr, /dia
" />
<PROG titulo="" valor="" />
<PROPI titulo="" valor="" />
<MONIT titulo="" valor="FUNÇÃO RENAL E PANCREATICA E NIVEIS FÁRMACOS" />
<ORIENT titulo="" valor="cONSULTA EXTERNA TR RIM-PANCREAS" />
</DADOSNOTAALTA>
然后我创建了一个名为Dados
的新表,其中包含以下列:
dados_nota, destino_tratamento, destino_doente,
metodo_admissao, resumo, diagnostico, tratamento,
prog, propi, monitorizacao, orientacao
这些都存在于XML中。
Table from where i want to extract the XML
Table where i want to save the transformed data
现在的问题是,我不知道如何让SQL Server直接从列中读取XML并将其传输到新数据库中的列。
亲切的问候
答案 0 :(得分:3)
你的问题可能很清楚,但根本不清楚......
......他们[列]都出现在XML ...
中
嗯,有人猜测,但这取决于你:-D
试试这个:
DECLARE @xml XML=
N'<DADOSNOTAALTA titulo="Externa E6020731-INT NEFROLOGIA (27-10-2006*1:07:17 PM)" mostra="1" liga="novaalta.aspx?x=DADOSNOTAALTA" versao="1" data="27-10-2006" hora="1:09:05 PM" autor="CH" publica="" episodio="6020731" especialidade="SCI" interna="0">
<DTALTA titulo="Data da Alta" valor="27-10-2006, 12:59" />
<DESTINOT titulo="" valor="Consulta externa" />
<DESTINOD titulo="Obs:" valor="HGSA 31/10/2006" />
<MTADM titulo="" valor="DISFUNÇÃO ENXERTO RENAL
CREATININA 1,4 -2,2 AGORA 1,7" />
<RESUMO titulo="" valor="BIOPSIA RENAL - SINAIS DE NTA, SEM SINAIS NA MICROSC. ÓPTICA DE REJEIÇÃO AGUDA
 C4D POSITIVO PERI-TUBULAR" />
<DIAGNO titulo="" valor="Transplante com rim de dador cadáver COM DISFUNÇÃO TRANSITÓRIA.
Transplante pâncreas
" />
<TRATAM titulo="" valor="Tacrolimus 5 + 4 mg, 12/12 horas
Sirolimus 2mg dia
Prednisolona 20mg, manhã
Valganciclovir 450mg
Omeprazol 20 mg dia
Bactrim 1 compr./dia
Epo B 6000 / 2 vezes /semana SC.
Ácido acetilsalicílico 100mg dias alternados
Carbonato de cálcio 2 gr, /dia
" />
<PROG titulo="" valor="" />
<PROPI titulo="" valor="" />
<MONIT titulo="" valor="FUNÇÃO RENAL E PANCREATICA E NIVEIS FÁRMACOS" />
<ORIENT titulo="" valor="cONSULTA EXTERNA TR RIM-PANCREAS" />
</DADOSNOTAALTA>';
SELECT @xml.value(N'/DADOSNOTAALTA[1]/@titulo',N'nvarchar(max)') AS dadosnota_titulo
,@xml.value(N'/DADOSNOTAALTA[1]/@mostra',N'int') AS dadosnota_mostra --some int value
--ommited more attributes
,@xml.value(N'/DADOSNOTAALTA[1]/DTALTA[1]/@titulo',N'nvarchar(max)') AS dtalta_titulo
,@xml.value(N'/DADOSNOTAALTA[1]/DTALTA[1]/@valor',N'nvarchar(max)') AS dtalta_valor --bad datetime format, should be ISO8601...
--The rest should work the same...
试试这个:
SELECT t.OtherColumn --add needed columns of your table
,t.YourXmlColumn.value(N'/DADOSNOTAALTA[1]/@titulo',N'nvarchar(max)') AS dadosnota_titulo
,t.YourXmlColumn.value(N'/DADOSNOTAALTA[1]/@mostra',N'int') AS dadosnota_mostra --some int value
--ommited more attributes
,t.YourXmlColumn.value(N'/DADOSNOTAALTA[1]/DTALTA[1]/@titulo',N'nvarchar(max)') AS dtalta_titulo
,t.YourXmlColumn.value(N'/DADOSNOTAALTA[1]/DTALTA[1]/@valor',N'nvarchar(max)') AS dtalta_valor --bad datetime format, should be ISO8601...
--The rest should work the same...
FROM YourTable AS t;