国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server 2005 讀取xml 文件 突破 varchar 8000 限制

2024-08-31 00:51:40
字體:
來源:轉載
供稿:網友

最近公司與一家供應商合作,要求把供應商的xml 數據導入到我公司的數據庫中,以方便業務處理.我公司使用的是SQL SERVER 2005 數據庫.查了一下幫助文件,很簡單的寫了個腳本,如下:


SELECT * into #temp1 FROM OPENROWSET(
   BULK 'D:/0700000015.xml' ,SINGLE_CLOB  ) AS x
 DECLARE @hdoc int
 DECLARE @doc varchar(8000)
select @doc=BulkColumn  from #temp1

EXEC sp_xml_PReparedocument @hdoc OUTPUT,@doc

SELECT * into #temp2
FROM OPENXML (@hdoc, '/AA/BB,2)
with  (A varchar(50),B varchar(50),C varchar(50)     )

exec sp_xml_removedocument @hdoc

先是使用一個較小的文件,測試了一下,通過.但當使用真正數據時,提示說XML 標記沒有閉合.經查看,原來并沒有把所有的數據都寫入到@doc中,于是又找幫助,@doc 可以使用ntext ,text ,xml ,varchar,char等類型.試著改為ntext,text 都沒有成功,原因是ntext ,text  類型不能直接定義成變量.于是使用了SQL Server 2005 的類型新成員:xml.結果是500KB以下的文件全部通過.當文件大于500KB時,還是報錯.于是有回去看幫助.試著把SINGLE_CLOB   改為SINGLE_BLOB  .最終解決了問題.由于沒有時間測試更大的文件,我只是試了在800KB以內的文件.其實,SINGLE_BLOB  代表的是varbinary(max)類型.能有多長是根據它來限制的.

最終更改如下:

SELECT * into #temp1 FROM OPENROWSET(
   BULK 'D:/0700000015.xml' ,SINGLE_BLOB  ) AS x
 DECLARE @hdoc int
 DECLARE @doc xml

select @doc=BulkColumn  from #temp1

EXEC sp_xml_preparedocument @hdoc OUTPUT,@doc

SELECT * into #temp2
FROM OPENXML (@hdoc, '/AA/BB,2)
with  (A varchar(50),B varchar(50),C varchar(50)     )

exec sp_xml_removedocument @hdoc


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉峪关市| 建德市| 盐源县| 綦江县| 抚州市| 武鸣县| 鹤峰县| 浏阳市| 五家渠市| 广州市| 扎兰屯市| 石渠县| 长兴县| 仁化县| 屏东县| 芦溪县| 南丹县| 文昌市| 井冈山市| 丰镇市| 日喀则市| 双辽市| 阿克苏市| 香格里拉县| 囊谦县| 宝兴县| 肃宁县| 庆云县| 綦江县| 靖西县| 隆安县| 云霄县| 乌兰察布市| 和龙市| 泰州市| 织金县| 安塞县| 石河子市| 喀喇| 长阳| 敦煌市|