如何将xml文件中的行插入sql表
您好,我对使用XML文件是新手, 我尝试将文件ICD.xml插入sql表 像这样的XML文件格式如何将xml文件中的行插入sql表,sql,xml,Sql,Xml,您好,我对使用XML文件是新手, 我尝试将文件ICD.xml插入sql表 像这样的XML文件格式 <letter> <title>#</title> <mainTerm> <title>1-propanol</title> <cell col="2">T51.3X1</cell> <cell col="3">T51.3X2</cell> <cell
<letter>
<title>#</title>
<mainTerm>
<title>1-propanol</title>
<cell col="2">T51.3X1</cell>
<cell col="3">T51.3X2</cell>
<cell col="4">T51.3X3</cell>
<cell col="5">T51.3X4</cell>
<cell col="6">--</cell>
<cell col="7">--</cell>
</mainTerm>
<mainTerm>
<title>2-propanol</title>
<cell col="2">T51.2X1</cell>
<cell col="3">T51.2X2</cell>
<cell col="4">T51.2X3</cell>
<cell col="5">T51.2X4</cell>
<cell col="6">--</cell>
<cell col="7">--</cell>
</mainTerm>
但我在语法上有错误
你能帮我吗?如果有别的办法的话
thnx
添加结束元素字母
在INSERT语句中添加C2列
删除列列表中最后一列后的逗号
将方法中的XQuery修改为节点“/letter/mainTerm”
为.value方法中的每个值添加条件
-
请参见中的示例,您使用的是哪个数据库?我使用的是sql数据库,它的名称MainDBsql database不是一个数据库。这是一个表达。您使用的是什么数据库引擎SQL Server、Oracle和MySQL?它们之间存在差异,试图回答您的问题意味着我们需要知道您使用的是哪一个。如果你发布一个问题,问我如何修理我的车?在汽车修理厂,法拉利的答案将不同于本田;这一点在这里也适用。请回答您的问题,并提供您正在使用的特定DBMS的标签。谢谢。语法错误是因为C7后面的逗号。列列表中的最后一列后面不应该有逗号。要获取所需的值,需要将nodes子句更改为/letter/mainTermthanx man it work for Me不客气,kiro;
Declare @xml XML
Select @xml = CONVERT(XML,bulkcolumn,2) FROM OPENROWSET(BULK 'File Path',SINGLE_BLOB) AS X
SET ARITHABORT ON
Insert into dbo.TestXML
(
C1,C3,C4,C5,C6,C7
)
Select
p.value('C1[1]','VARCHAR(100)') AS C1,
P.value('C2[1]','VARCHAR(100)') AS C2,
P.value('C3[1]','VARCHAR(100)') AS C3,
P.value('C4[1]','VARCHAR(100)') AS C4,
P.value('C5[1]','VARCHAR(100)') AS C5,
P.value('C6[1]','VARCHAR(100)') AS C6,
P.value('C7[1]','VARCHAR(100)') AS C7,
From @xml.nodes('/letter/title') PropertyFeed(P)
IF OBJECT_ID('dbo.TestXML') IS NOT NULL DROP TABLE dbo.TestXML
CREATE TABLE dbo.TestXML
(
C1 varchar(10),
C2 varchar(10),
C3 varchar(10),
C4 varchar(10),
C5 varchar(10),
C6 varchar(10),
C7 varchar(10)
)
DECLARE @xml xml =
'<letter>
<title>#</title>
<mainTerm>
<title>1-propanol</title>
<cell col="2">T51.3X1</cell>
<cell col="3">T51.3X2</cell>
<cell col="4">T51.3X3</cell>
<cell col="5">T51.3X4</cell>
<cell col="6">--</cell>
<cell col="7">--</cell>
</mainTerm>
<mainTerm>
<title>2-propanol</title>
<cell col="2">T51.2X1</cell>
<cell col="3">T51.2X2</cell>
<cell col="4">T51.2X3</cell>
<cell col="5">T51.2X4</cell>
<cell col="6">--</cell>
<cell col="7">--</cell>
</mainTerm>
</letter>'
INSERT dbo.TestXML(C1, C2, C3, C4, C5, C6, C7)
SELECT p.value('(title)[1]', 'VARCHAR(100)') AS C1,
p.value('(cell)[@col=2][1]','VARCHAR(100)') AS C2,
p.value('(cell)[@col=3][1]','VARCHAR(100)') AS C3,
p.value('(cell)[@col=4][1]','VARCHAR(100)') AS C4,
p.value('(cell)[@col=5][1]','VARCHAR(100)') AS C5,
p.value('(cell)[@col=6][1]','VARCHAR(100)') AS C6,
p.value('(cell)[@col=7][1]','VARCHAR(100)') AS C7
FROM @xml.nodes('/letter/mainTerm') PropertyFeed(p)
SELECT *
FROM dbo.TestXML