`
chenqingwei
  • 浏览: 33268 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

批量写数据---将XML数据批量写入数据库

    博客分类:
  • NET
阅读更多
将数据批量写入数据库的需求是比较多的,方法也有很多种,在.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文件的数据组合成一个字符串了,然后就可以用上面的方法将数据导入到数据库了。
分享到:
评论

相关推荐

    C#读取XML文件并写入数据库

    下面,我们将详细介绍三种使用C#读取XML文件并将其写入数据库的方法。 1. **使用XmlReader类逐行读取并写入** - `XmlReader` 是一个高效的流式读取器,不占用大量内存。通过创建`XmlReader`实例,我们可以逐个节点...

    vb批量将excel数据导入access以及批量将access数据库中的数据导入excel源代码

    标题提到的“vb批量将excel数据导入access以及批量将access数据库中的数据导入excel源代码”是解决这类问题的一种有效方案。下面将详细介绍这两个过程的关键知识点。 1. Excel数据导入Access: - **数据连接**:...

    xml_database.rar_xml_xml databa_xml 数据库_xml数据_数据库 XML

    这通常需要一个转换过程,例如使用XSLT(Extensible Stylesheet Language Transformations)将数据从数据库记录格式转换为XML文档。 3. **生成XML文件**:将转换后的XML数据写入文件,形成最终的XML输出。 XML...

    XML数据写入SQL数据库的方法.pdf

    一旦数据被正确地解析和转换,就可以构造SQL插入语句将数据写入数据库。对于大量数据,批量插入通常更高效。例如,在SQL Server中,可以使用BULK INSERT或OPENROWSET函数;在MySQL中,可以利用LOAD DATA INFILE语句...

    vc 如何将数据库数据快速写入excel

    这个程序可能使用了上述的一种或多种策略,例如批量读取SQLite数据,然后利用高效的库如EPPlus将数据写入Excel。 在实现过程中,需要注意以下几点: - 数据预处理:对数据进行必要的清洗和格式转换,确保与Excel...

    XML与数据库相互转换

    可以使用SQL查询返回结果集,然后使用`DataSet`或`DataTable`对象来接收这些数据,最后通过`WriteXml`方法将数据写入XML文件。 3. **VS2003中的工具和API**: Visual Studio 2003提供了集成的XML编辑器,支持XML ...

    kettle批量解析多个xml文件

    在本场景中,我们关注的是如何通过Kettle解析大量XML文件并将数据导入到Oracle数据库。 描述中提到的“批量数据导入”是ETL流程中的关键环节,尤其在生产环境中,数据的高效处理和准确导入至关重要。Kettle提供了...

    labview实现平化至XML写入数据库,减少数据库量和表个数

    在LabVIEW中,可以使用“XML String To Document”函数将数据转换为XML文档,然后使用“Document To XML String”函数生成XML字符串,方便后续处理。 一旦数据被转换为XML格式,下一步就是将其写入数据库。在...

    Spring Batch读取txt文件并写入数据库的方法教程

    这里,我们使用 JdbcBatchItemWriter 将处理后的 User 对象批量写入数据库。SQL 语句用于插入新的记录。 4. 最后,定义一个 Job 和 Step: ```java @Configuration @EnableBatchProcessing public class ...

    spring Batch实现数据库大数据量读写

    分步处理将数据分块处理,避免一次性加载过多数据。分割则将大任务分解为子任务,可以并行执行,提升处理速度。 ### 7. 事务管理 Spring Batch 内置事务管理,确保数据的一致性和完整性。通过配置,可以控制事务的...

    以读取XML方式的大批量导入Excel

    4. **数据写入Excel**:创建新的Excel工作表,使用Apache POI将处理后的数据写入。 5. **优化性能**:如果数据量巨大,可能需要考虑多线程处理,将XML文件分割成多个部分,同时解析和导入。 在实际应用中,这种...

    C#连接oracle数据库及根据表中数据生成xml

    - 数据读取:通过`OracleDataReader`或`OracleDataAdapter`读取查询结果,可以将数据填充到DataSet或DataTable中。 2. **Oracle数据库操作**: - 表创建:根据XML文件中的结构,可以编写SQL DDL语句(Data ...

    Hbase笔记 —— 利用JavaAPI的方式操作Hbase数据库(往hbase的表中批量插入数据).pdf

    在本文档中,我们将深入探讨如何使用Java API与HBase数据库进行交互,特别是关于如何创建表、修改表结构以及批量插入数据。HBase是Apache的一个分布式、可扩展的大数据存储系统,它基于谷歌的Bigtable设计,适用于...

    数据库数据导出到Excel 小Demo

    在数据库数据导出场景中,Apache POI是将数据转换为Excel格式的理想工具。 以下是实现这个小Demo的关键步骤: 1. **数据准备**:首先,你需要定义一个MyBatis的Mapper接口,包含一个SQL查询方法,用于从数据库中...

    用Delphi打开一个数据库型的XML文件..rar

    当我们提到“用Delphi打开一个数据库型的XML文件”,我们关注的核心是如何利用Delphi的组件和功能来处理XML数据,并将这些数据与数据库进行交互。XML(eXtensible Markup Language)是一种结构化数据存储格式,常...

    Storm综合案例二Storm集群向Kafka集群读取数据并写入MySQL远程模式

    今天接上文,来实现一个Storm数据流处理综合案例的第二部分,Storm集群向Kafka集群源源不断读取数据,通过MyBatis写入到MySQL数据库,并部署为远程模式 准备工作 参考上文准备工作 代码编写 思路:Storm集群从...

    Android-将数据写入Excel表格并存储到外部存储中

    在Android平台上,将数据写入Excel表格并存储到外部存储是一项常见的需求,特别是在数据分析、报告生成或者用户数据导出的场景下。这个过程涉及到多个关键知识点,包括Android的文件操作、Excel文件格式处理以及可能...

    《使用kettle把XML文档转换成数据表结构》附件

    这一步将数据写入关系型数据库,如MySQL、Oracle或PostgreSQL。在“表输出”步骤中,你需要配置数据库连接信息,包括服务器地址、端口、数据库名、用户名和密码。此外,还要定义数据表的字段和数据类型,确保它们与...

    kettle调用达梦数据说明文档

    而“表输出”步骤则用于将数据写入达梦数据库,需要指定目标表名和插入操作方式。 3. 对于更复杂的数据转换,可以利用Kettle的“转换”功能,通过一系列步骤实现数据清洗、转换和加载。 四、注意事项 - 当遇到版本...

Global site tag (gtag.js) - Google Analytics