批量写数据---将XML数据批量写入数据库
来源:互联网 发布:黑客数据交易 编辑:程序博客网 时间:2024/05/16 12:08
将数据批量写入数据库的需求是比较多的,方法也有很多种,在.net 里使用程序比较好的方法是使用 Bulk Copy 将大量数据复制到数据库。如果数据源为XML文件,使用SQL BULK COPY就需要将XML数据导入到DataTable,下面的方法可以直接将XML数据传到SQLSERVER然后处理,另外还可以直接使用T-SQL将XML文件的数据导入到数据库。这里最主要的是要使用二个系统存储过程:SP_XML_PREPAREDOCUMENT 和 SP_XML_REMOVEDOCUMENT SP_XML_PREPAREDOCUMENT的功能是:读取XML文件后使用 MSXML 分析器 (Msxmlsql.dll)对XML数据进行分析,并提供分析后的文档供使用。分析后得到的数据是对 XML文件中的各节点(元素、属性、文本和注释等)以树状形式表现。分析后的数据存储在 SQL Server 的内部缓存中。 SP_XML_REMOVEDOCUMENT 的功能是:根据文档句柄释放文档所占的内存。 先建立一个XML字符串和一个表:
<?xml version="1.0"?><ROOT> <USER ID="1" Name="SBQCEL"/> <USER ID="2" Name="PEACELI"/> <USER ID="3" Name="SHEEPCHANG"/></ROOT>
CREATE TABLE Users ( UserId INT, UserName VARCHAR(20) )
处理的方法很简单: DECLARE @HDOC INT --文档句柄DECLARE @XMLSTRING VARCHAR(200) --XML字符串SET @xmlString ='<?xml version="1.0"?><ROOT> <USER ID="1" Name="SBQCEL"/> <USER ID="2" Name="PEACELI"/> <USER ID="3" Name="SHEEPCHANG"/></ROOT>'--使用系统存储过程SP_XML_PREPAREDOCUMENT分析XML字符串EXEC SP_XML_PREPAREDOCUMENT @HDOC OUTPUT, @XMLSTRING--使用OPENXML从SQL Server 的内部缓存查询数据INSERT INTO Users SELECT * FROM OPENXML(@HDOC,N'/ROOT/USER')WITH ( ID INT, Name VARCHAR(10))--使用系统存储过程SP_XML_REMOVEDOCUMENT释放内存EXEC SP_XML_REMOVEDOCUMENT @HDOC
如果要用T-SQL直接读取一个XML文件并将数据导入到表里,需要做一些额外的处理:先要用XP_CMDSHELL将XML数据读到一个临时表(变量表),然后将每行数据组合成一个字符串,再用上面的方法处理。需要注意的是XP_CMDSHELL以行来处理数据的。下面是一个简单的事例:--定义一个变量表临时存储调用XP_CMDSHELL后得到的数据DECLARE @TEMP TABLE( ID INT IDENTITY(1,1), XMLSTRING VARCHAR(200))--使用XP_CMDSHELL将XML文件的数据插入到变量表里INSERT INTO @TEMP EXEC MASTER.DBO.XP_CMDSHELL 'TYPE E:/A.XML'DECLARE @LOOP INT, --循环计数 @COUNT INT, --行数 @XMLSTRING VARCHAR(200) --存储XML字符串SELECT @LOOP = 1, --从第1行开始 @XMLSTRING='', --初始化 @COUNT = (SELECT COUNT(1) FROM @TEMP) --获得行数--做一个循环,将数据组合成一个字符串以便处理WHILE (@LOOP<=@COUNT)BEGIN SELECT @XMLSTRING = @XMLSTRING + XMLSTRING FROM @TEMP WHERE ID = @LOOP SET @LOOP = @LOOP + 1END--查看处理结果SELECT @XMLSTRING
用上面的方法处理后就将一个XML文件的数据组合成一个字符串了,然后就可以用上面的方法将数据导入到数据库了
- 批量写数据---将XML数据批量写入数据库
- 批量写数据---将XML数据批量写入数据库
- DataTable的数据批量写入数据库
- DataTable的数据批量写入数据库
- DataTable的数据批量写入数据库
- DataTable的数据批量写入数据库
- Sqlite3批量写入数据到数据库中
- 将批量xml文件 数据批量添加…
- Django 将数据批量插入数据库bulk_create()
- Django 将数据批量插入数据库bulk_create()
- Django 将数据批量插入数据库bulk_create()
- 批量写数据
- sqlserver数据批量写入(转)
- Hbase之批量数据写入
- Laravel批量写入数据详解
- ADO.NET之数据库表之间批量写入数据
- 数据批量导入数据库
- 数据库批量插入数据
- dwr2.1调用有简单参数的java方法之拆分串
- 关于文件路径
- VC中选择目录对话框
- 2009春运,广州是最具人文关怀的城市
- XML与数据库
- 批量写数据---将XML数据批量写入数据库
- delphi 5.0写登录界面(新手)
- Joomla!的插件系统
- SQL Server 全局变量
- 最常用Oracle 命令集合 学习oracle很有帮助!
- .net 3.0 WCF 开发日志(二)
- 换工作记(四)---- 小型创业公司面试记
- 其实你就是一头猪
- 什么是Oracle的物化视图