フォルダーから OpenRowSet を使用して XML ファイルを読み込もうとしましたが、それができず、エラーが発生しました
"' @FullFilename'' が存在しないため、一括読み込みできません。
各 XML ファイルからすべてのデータを取得するために問題を修正する方法を提案していただければ幸いです。
ありがとう。
コード:
declare @Directory varchar(50)
select @Directory = 'E:\XML\'
DECLARE @CD TABLE (XMLData XML);
declare @FileExist int
DECLARE @FileName varchar(500),
@DeleteCommand varchar(1000),
@FullFileName varchar(500)
DECLARE @SQL NVARCHAR(1000),@xml xml
--This is so that we know how long the loop lasts
declare @LoopID int, @MaxID int
SELECT @LoopID = min(id),@MaxID = max(ID)
FROM #tempList
WHILE @LoopID <= @MaxID
BEGIN
SELECT @FileNAme = filename
from #tempList
where id = @LoopID
SELECT @FullFileName = @Directory + @FileName
print @FULLFileName
exec xp_fileexist @FullFileName , @FileExist output
if @FileExist =1 --sanity check in case some evil person removed the file
begin
---********************************Problem with @FullFileName----------------
INSERT INTO @CD
SELECT *
FROM OPENROWSET(BULK ''' + @FullFileName +''' ,Single_BLOB) as rs
---********************************------------
select * from @CD
--SET @DeleteCommand = 'del ' + @Directory + @FileName
--maybe you want to delete or move the file to another directory
-- ** here is how to delete the files you just imported
-- uncomment line below to delete the file just inserted
--EXEC MASTER..XP_CMDSHELL @DeleteCommand
-- ** end of here is how to delete the files
end
--Get the next id, instead of +1 we grab the next value in case of skipped id values
SELECT @LoopID = min(id)
FROM #tempList
where id > @LoopID
END
select * from #tempList
これは機能し、指定されたファイルから XML データを取得できます
DECLARE @CD TABLE (XMLData XML);
Declare @get_GeneralID bigint
INSERT INTO @CD
SELECT *
FROM OPENROWSET(BULK N'E:\XML\TestResult.XML', SINGLE_BLOB) rs;
select * from @CD
PS: Web で見つけたコードをまとめました。