嗨我试图从XML文件中获取一些信息到我的MSSQL数据库,任何人都可以发现错误。获取XML信息到SQL
这里是我的SQL代码(现在的固定循环,对整个目录和错误陷阱云)
使用MYDB
IF OBJECT_ID('mydb..tempList') IS NOT NULL
DROP TABLE tempList
CREATE TABLE tempList ([FileName] VARCHAR(500))
--plain vanilla dos dir command with /B switch (bare format)
INSERT INTO tempList
EXEC MASTER..XP_CMDSHELL 'dir C:\Data\icecat\xmls /B'
--delete the null values
DELETE tempList WHERE [FileName] IS NULL
-- Delete all the files that don't have xml extension
DELETE tempList WHERE [FileName] NOT LIKE '%.xml'
--this will be used to loop over the table
alter table tempList add id int identity
go
truncate table dbo.XMLImportRelated --in case you want to rerun just this codeblock
DECLARE @Directory varchar(100)
SELECT @Directory = 'C:\Data\icecat\xmls\'
DECLARE @FileExist int
DECLARE @FileName varchar(500),@DeleteCommand varchar(1000),@FullFileName varchar(500), @SQLFullFileName varchar(500)
DECLARE @ProductID int
DECLARE @RelatedID int
- 这是使我们知道循环持续多久 DECLARE @LoopID INT,@MaxID INT SELECT @LoopID =分钟(ID),@ MaxID = MAX(ID) FROM tempList
WHILE @LoopID <= @MaxID
BEGIN
SELECT @FileNAme = filename
FROM tempList
WHERE id = @LoopID
SELECT @FullFileName = @Directory + @FileName
EXEC xp_fileexist @FullFileName , @FileExist output
IF @FileExist =1 --sanity check in case some evil person removed the file
BEGIN
DECLARE @x XML, @sql NVARCHAR(MAX);
BEGIN TRY
SELECT @sql = N'SELECT @X = CONVERT(xml,[ICECAT-interface],2)
FROM OPENROWSET(BULK ''' + @FullFileName + ''' ,SINGLE_BLOB)
---------------------^^ escaped quotes are important
AS Import([ICECAT-interface]);';
EXEC sp_executesql @sql, N'@x XML OUTPUT', @x OUTPUT;
END TRY
BEGIN CATCH
PRINT 'Error'
END CATCH
INSERT XMLImportRelated ([ProductID],RelatedID)
select P1.X.value('@ID', 'int') as ProductID,
P2.X.value('@ID', 'int') as RelatedID
from @X.nodes('/ICECAT-interface/Product') as P1(X)
cross apply P1.X.nodes('ProductRelated') as PR(X)
cross apply PR.X.nodes('Product') as P2(X)
-- SET @DeleteCommand = 'del ' + @Directory + @FileName
END
SELECT @LoopID = min(id)
FROM tempList
WHERE id > @LoopID
END
,这里是一个URL到XML我尝试使用
http://www.metatronics.co.uk/XML/3326091.xml
感谢家伙,我不断收到空值,因此它的东西不多IM失踪,但看着这一切早上我去疯狂, 约翰之后。
您提供的是要求用户输入用户名和密码,所以我不能看到该文件的URL。你的表结构是什么? –
对不起,这里有一些文件的相关位是在底部 –
ARRRRgh它太长http://www.metatronics.co.uk/XML/3326091.xml这个位置不会要求和凭据我移动它 –