zoukankan      html  css  js  c++  java
  • SSIS中xml的输入输出

    输出为XML的两种方法
    1.用数据流, 将平面文件作为DES输出
      在SQL里将要输出的数据查询成为单列的字符串: SELECT (SELECT * FROM A FOR XML ROOT('A'),ELEMENTS) AS A
      转换该列的数据类型为 NTEXT
      用平面文件DES接收转换后的列,并保存为.xml格式(而非.txt)

    2.用控制流, 在script tast用字节流输出
      在执行SQL里将要输出的数据查询为XML格式 SELECT * FROM A FOR XML ROOT('A'),ELEMENTS
      用变量接收保存该XML
      在script task里,用字节流的方式把XML写到文件(写的路径也可以用变量传递)
      写入文件时,默认会加上<ROOT>节点,可以用字符串处理的repace方法将其替换为空串

    3.不使用 SSIS,直接通过 SQL也可以输出到文件
          -- XP_CMDSHELL 默认情况处于安全考虑,该功能是关闭的,需要用sp_configure设置为开启,用完之后再设置为关闭
      EXEC XP_CMDSHELL 'BCP "SELECT(SELECT TOP 2 * FROM [AdventureWorks2012].[Sales].[SalesOrderDetail]
        FOR XML RAW(''SalesOrderDetail''),ROOT(''SalesOrder''),ELEMENTS )AS XML_Order " QUERYOUT "D: ext.xml" -c -T'

    输入XML解析数据到数据库
    1.数据流中,用XML作为源
      首先需要确定XML是一个标准文件,能够被SSIS解析
      需要关于XML描述的XSD文件(可以根据已有的xml生成一个XSD文件)
      DES表的字段一般都可以用nvarchar接收; 一般默认xml输出的字符串类型的长度为unicode 255

      标签里带有“xmlns”命名空间的XML文件,可以自己写一个XSLT文件,用XSLT文件规定的格式,重新生成不带命名空间的XML文件
        http://www.cnblogs.com/chenxizhang/archive/2009/06/20/1507287.html

    2.XML字符串
      比如,基于SOAP协议的WebService,用WSDL传递来的XML字符串
      如果XML字符串的标签里带有“xmlns”命名空间,可以考虑用SQL解析(先将XML保存到临时表,再用SQL的replace方法去掉xmlns,然后用SQL解析)

  • 相关阅读:
    [智能架构系列]PHP获取用户IP所在地的信息
    BT的QQ,从QQ2011看腾讯的变化
    值得怀念的日子
    懂运营的RD是最好的PM
    A && B
    更新redis到2.2.1版本
    [智能架构系列]什么是Buddy智能开发框架
    PHP你知道的
    No copy,No paste
    结网读书笔记从产品经理的角度看产品
  • 原文地址:https://www.cnblogs.com/lynhou/p/6740274.html
Copyright © 2011-2022 走看看