用sql寫個作業每隔五分鐘去讀某個檔案夾下所有xml檔案,並匯入到DB中

來源:互聯網
上載者:User

訊息 15281,層級 16,狀態 1,過程 xp_cmdshell,第 1 行
SQL Server 阻止了對組件 'xp_cmdshell' 的 過程 'sys.xp_cmdshell' 的訪問,因為此組件已作為此伺服器安全配置的一部分而被關閉。系統管理員可以通過使用 sp_configure 啟用 'xp_cmdshell'。有關啟用 'xp_cmdshell' 的詳細資料,請參閱 SQL Server 聯機叢書中的 "介面區配置器"。

exec sp_configure 'show advanced options', 1;
reconfigure;
exec sp_configure 'xp_cmdshell', 1; reconfigure;

用sql寫個作業每隔五分鐘去讀某個檔案夾下所有xml檔案,並把它的資料插入到一張表在把它刪除

--create table TEST (
--A char(10),B char(10),C char(10)
--)

DECLARE
@XMLDIR varchar(2000), --XML放置的檔案全路徑
@DIR varchar(1000), --XML的檔案夾
@FileFullName varchar(8000) --遊標用,檔案名稱(全路徑)
declare
@FileTable TABLE(x varchar(8000)) --暫存資料表,儲存 檔案夾所有XML檔案名稱

SET @DIR='D:\TEST'
SET @XMLDIR=N'DIR '+ @DIR + '\*.xml' --*.xml 唯讀取是XML的副檔名檔案

INSERT @FileTable
exec xp_cmdshell @XMLDIR --將檔案夾的內容讀取插入暫存資料表中
delete from @FileTable where x not like '%.xml%' or x is null
update @FileTable set x=@DIR+'\'+SUBSTRING(x,37,120)
--select * from @FileTable


declare fCursor cursor for
select x from @FileTable
open fCursor
fetch next from fCursor into @FileFullName
while(@@fetch_status=0)
BEGIN
declare
@xml varchar(8000), --XML轉換成列的內容
@Pointer INT, --指向位置的變數
@DELFILENAME varchar(2000) --刪除檔案的CMDSHELL
declare @table TABLE(x varchar(8000))
SET @DELFILENAME= 'DEL '+@FileFullName
insert into @table EXEC ('(SELECT * FROM OPENROWSET(BULK '''+@FileFullName+''',SINGLE_CLOB) as x)')
select @xml=x from @table
EXECUTE sp_xml_preparedocument @Pointer OUTPUT,@xml
INSERT INTO TEST(A,B,C)
SELECT A,B,C
FROM OPENXML (@Pointer,'ROOT/Row')WITH(A varchar(10),B varchar(10),C varchar(10))
EXEC sp_xml_removedocument @Pointer

EXEC xp_cmdshell @DELFILENAME
fetch next from fCursor into @FileFullName
END
close fCursor --關閉遊標
deallocate fCursor --刪除遊標

剩下的就是加個代理了..哈...5分鐘執行一次

XML檔案如下

<ROOT><Row A='1' B='1' C='1'></Row><Row A='2' B='1' C='1'></Row><Row A='3' B='1' C='1'></Row><Row A='4' B='1' C='1'></Row></ROOT>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.