【发布时间】:2013-02-28 06:33:56
【问题描述】:
我将一个 xml 字符串传递给 SQL Server 中的存储过程,以便将 10000 条记录插入我的表中。在这当我调用这个存储过程。想用我传递的那个 xml 字符串检查 SQL Server 表,如果记录存在我不想插入,如果它是单独的记录必须插入的新记录。给出一些解决方案。谢谢。
ALTER procedure [dbo].[SP_CMSUSER1]
(@xmlString ntext)
as
begin
DECLARE @idoc INT
DECLARE @data nvarchar(100)
EXEC sp_xml_preparedocument @idoc OUTPUT, @xmlString
INSERT INTO dbo.Seg_RecipientsTemp (ContactID,first_name,last_name,company,email,last_updated)
SELECT ContactID,
first_name,
last_name,
company,
email,
last_updated FROM OPENXML(@idoc,
'/NewDataSet/ContactData', 6)
WITH
(ContactID int ,
first_name nvarchar(50),
last_name nvarchar(50),
company nvarchar(max),
email nvarchar(100),
last_updated datetime
)
end
我的 Xml 是:
<NewDataSet>
<Table>
<ContactID>2</ContactID>
<last_name>klklk</last_name>
</Table>
<Table>
<ContactID>4</ContactID>
<first_name>k</first_name>
<last_name>kk</last_name>
<company>k</company>
</Table>
<Table>
<ContactID>6</ContactID>
<first_name>naveen</first_name>
<last_name />
<company>inno</company>
</Table>
<Table>
<ContactID>7</ContactID>
<first_name>sridar</first_name>
<last_name />
<company>mahindara</company>
</Table>
<Table>
<ContactID>1</ContactID>
<first_name>terst</first_name>
</Table>
<Table>
<ContactID>2</ContactID>
<first_name />
<last_name>ask</last_name>
<company />
</Table>
</NewDataSet>
【问题讨论】:
-
查看示例 XML 并了解您想要从中提取的内容会很有帮助!
-
我想用xml字符串检查sql表中是否存在contactid,如果已经存在我不想插入,只需要插入新记录,我需要如果不存在(select * from dbo. Seg_RecipientsTemp where Contact_Id=(在此我需要检查 xml conatacid)
-
是否要插入
ContactID中不存在但存在于 XML 数据中的dbo.Seg_RecipientsTemp记录?是否要为 XML 数据中确实存在的ContactID更新dbo.Seg_RecipientsTemp中的数据? -
什么版本的 SQL Server?自 2005 年以来的每个版本都支持正确的
xml数据类型,如果可能,最好使用它 -
不,我不想更新现有的,我不做任何事情,如果新记录来了,我需要插入。我不想更新现有记录
标签: sql-server sql-server-2008 tsql