- 浏览: 32231 次
- 性别:
- 来自: 北京
最新评论
将数据批量写入数据库的需求是比较多的,方法也有很多种,在.net 里使用程序比较好的方法是使用 Bulk Copy 将大量数据复制到数据库 。如果数据源为XML文件,使用SQL BULK COPY就需要将XML数据导入到DataTable,下面的方法可以直接将XML数据传到SQL SERVER然后处理,另外还可以直接使用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 + 1
END
--查看处理结果
SELECT @XMLSTRING用上面的方法处理后就将一个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 + 1
END
--查看处理结果
SELECT @XMLSTRING用上面的方法处理后就将一个XML文件的数据组合成一个字符串了,然后就可以用上面的方法将数据导入到数据库了。
发表评论
-
动态生成WORD内容
2009-09-15 14:12 940//动态生成WORD内容 St ... -
页面静态化
2009-09-03 10:25 12431替代法 1.1引用地址 http://www.cnbl ... -
面试
2009-08-18 13:09 22561.简述 private、 protected、 public ... -
更改 Visual Studio 中用户界面文本所使用的语言
2009-08-06 21:26 1664在“工具”菜单中单击“选项”。 在“选项”对话框中展开“环境 ... -
Visual Studio 2005 图像库
2009-08-06 21:22 1097Visual Studio 2005 图像库是 ... -
SSO与用户登录问题容易混淆
2009-08-01 13:02 905单点登陆(SSO),多个系统一次登陆权限均配, 彼此 ... -
.NET设计模式开篇
2009-07-03 23:58 796这几天在看设计模式方面的书,所以记录一下. 1.设计模式是规则 ... -
NET安装模板
2009-06-02 19:52 754菜单->Tools->option->pro ... -
在InstallShield中手动修改XML Files Changes
2009-05-10 13:43 1773最近在忙于打包安装程序,使用的是InstallShield 1 ... -
Visual Studio小技巧:复制代码时,保留原ID
2009-05-10 13:40 1083在我们开发过程中,经常会复制一些代码,而Visual Stud ... -
C#操作数据库备份和还原
2009-04-28 11:11 2351C#实现SQLSERVER2000数据库备份还原的两种方法 ... -
FreeTextBox 1.6.3 (中文版)在新闻发布、博客写作、论坛社区等多种 Web 系统中都
2009-03-29 16:20 2234FreeTextBox 1.6.3 (中文版) ... -
C#编写最小化时隐藏为任务栏图标的Window appllication
2009-03-29 16:14 22971.设置窗体属性showinTask=false 2.加no ... -
WEB技巧[搜集整理]
2009-03-29 16:10 681http://www.logomaker.cn 控制横向和 ... -
漂亮的 js 日历(把日期输入到文本框)
2009-03-29 16:07 1356<!DOCTYPE HTML PUBLIC &quo ... -
.Net 图片上传的一个类库的源码
2009-03-29 16:05 1303上传图片到服务器上是网站开发中很常用的功能,它的实现也很简单, ... -
VS2005下为ASP.NET 2.0网站生成唯一程序集
2009-03-29 16:00 1728我的新闻管理系统http://cms.bmw.net.cn/I ... -
页面间传值的方法总结
2009-02-20 14:54 957ASP.NET提供了卓越的事件驱动编程模型,让开发者简化了应用 ... -
无法将类型“ASP.login_aspx”转换为“System.Web.UI.WebControls
2009-02-20 11:18 1408发布网站里遇到,无法将类型“ASP.login_aspx”转换 ... -
VSS使用过程中的问题
2008-12-20 11:46 968VSS客户端不能访问问题“unable to open use ...
相关推荐
今天接上文,来实现一个Storm数据流处理综合案例的第二部分,Storm集群向Kafka集群源源不断读取数据,通过MyBatis写入到MySQL数据库,并部署为远程模式 准备工作 参考上文准备工作 代码编写 思路:Storm集群从...
全国省市地区数据库以及sql生成脚本 其中包含两个文件,一个是xml数据文件,一个是生成脚本
与使用INSERT和SELECT相比,这是将数据进出表的更快的方法。 没有出色的库,该项目将无法实现,该库具有Postgres协议的漂亮实现。 建立 在Central Maven存储库中可用。 您可以将以下依赖项添加到pom.xml中,以在...
|--xml文件的pull解析与序列化写入 |--xml的封装序列化 |--任务循环之只在Activity显示时执行 |--修改文件的最后修改时间 |--偏好设置(回显) |--内存优化之各种方法 |--内容提供者之短信的序列化对象读写 |--内容...
可以将工作表的数据修改写入数据库表);多种格式的数据导出包括 XLS、CSV、INSERT SQL、HTML、XML;中英文双语界面并能切换;监控批量SQL语句的运行(在运行中可暂停、更正);不需要安装 Oracle 客户端;占用系统...
易语言5.1 相对于易语言5.0更新说明: ... 修改XML解析支持库,增加写出CDATA数据功能,解决解析XML时错误的丢弃换行和TAB字符的BUG,解决读取节点值时对CDATA数据进行转义处理的BUG。 20. 修改扩展界面支持库...
3、易用的数据库、数据表备份与还原功能; 4、支持导入与导出XML、HTML、CSV等多种格式的数据; 5、直接运行批量 SQL 脚本文件,速度极快; 6. 智能SQL语句自动完成功能 说实话SQLyog不好汉化,居多的资源,光...
通过线程池实现异步地将Redis中缓存队列添加到数据库,减少数据库的写入压力。 * 4.nginx与tomcat集群支持: * 通过SpringBoot的内置Tomcat方便了Tomcat集群的部署 * 提供查看IP和端口API方便进行nginx反向代理和...
3、易用的数据库、数据表备份与还原功能; 4、支持导入与导出XML、HTML、CSV等多种格式的数据; 5、直接运行批量 SQL 脚本文件,速度极快; 6. 智能SQL语句自动完成功能 说实话SQLyog不好汉化,居多的资源,光...
在resources / properties.xml中设置数据库属性 Constants.java中的音调设置 编译 mvn clean编译程序集:单个 用法 java -jar target / MongoToCouchbase-1.0-SNAPSHOT-jar-with-dependencies.jar
1.4.5 xml、数据库和统一数据表示 1.5 以数据的中心的应用程序模型 1.6 数据访问api的发展历程 1.7 小结 第2章 ado.net基础 2.1 数据访问和.net体系结构 2.2 两种数据访问模式 .2.3 连接模式 ...
在需要添加格式的地方加入特殊标记(如$htmlformat$),动态生成文件时利用代码读取此模板,然后获得前台输入的内容,添加到此模板的标记位置中,生成新文件名后写入磁盘,写入后再向数据库中写入相关数据。