zoukankan      html  css  js  c++  java
  • SQL Server 对XML数据类型的SQL语句总结

    --创建XMLTable
    create table XMLTable(Id int  IDENTITY (1, 1) primary key, XMLCol xml);  
    go   
    ----------------------------------------------------------------------------------
    --插入XML数据单条
    insert into [XML].[dbo].[XMLTable]
               ([XMLCol]) 
               select * from 
    openrowset(BULK 'G:DocumentXMLDocumentx3.xml',SINGLE_CLOB) as x
    ----------------------------------------------------------------------------------
    --插入XML数据单条
    DECLARE  @s varchar(100)
    SET @s = '<Cust><Fname>Andrew</Fname><Lname>Fuller</Lname></Cust>' 
    INSERT INTO [XML].[dbo].[XMLTable]
               ([Id],[XMLCol])
    VALUES(3,cast(@s as xml))
    GO
    
    ----------------------------------------------------------------------------------
    --查询XMLTable数据表
    select * from XMLTable
    ----------------------------------------------------------------------------------
    --循环插入100万条数据
    declare @i int
    declare @r varchar(200)
    set @i=1
    while @i<1000000
    begin
    insert into [XML].[dbo].[XMLTable]
               ([XMLCol])
    --select * from [xml]
    select * from 
    openrowset(BULK 'G:NXDDataxmldataxmldata0000000000.xml', SINGLE_CLOB) as x
    set @i=@i+1
    end
    ----------------------------------------------------------------------------------
    --循环插入数据
    declare @x int
    declare @y int
    declare @count int
    set @x = 0
    while @x < 100
    begin
         set @y = 0
         while @y < 100
         begin
             set @count = 0  
             while @count < 100
                 begin
                 declare @path nvarchar(200)
                 set @path = N'insert into [XML].[dbo].[XML]([XML])select * from openrowset(bulk ''G:NXDDataxmldataxmldata0' + right('0'+cast(@x as nvarchar),2) + N'' + right('0'+cast(@y as nvarchar),2) + N'0' + right('0'+cast(@x as nvarchar),2) + right('0'+cast(@y as nvarchar),2)+ right('0'+cast(@count as nvarchar),2)+ N'.xml'',SINGLE_CLOB) as x';
                 EXEC sp_executesql @path
                 set  @count = @count + 1 
                 end
         set @y = @y + 1
         end
    set @x = @x + 1
    end
    ----------------------------------------------------------------------------------
    --XML主索引  
    create primary xml index IPXML_XMLTable_XMLCol on XMLTable(XMLCol);  
    --XML路径辅助索引  
    create xml index IXML_XMLTable_XMLCol_Path on XMLTable(XMLCol)  
    using xml index IPXML_XMLTable_XMLCol for path  
    --XML属性辅助索引  
    create xml index IXML_XMLTable_XMLCol_Property on XMLTable(XMLCol)  
    using xml index IPXML_XMLTable_XMLCol for Property  
    --XML内容辅助索引  
    create xml index IXML_XMLTable_XMLCol_value on XMLTable(XMLCol)  
    using xml index IPXML_XMLTable_XMLCol for value 
    ----------------------------------------------------------------------------------
    --查询语句
    select TOP 1000  XMLCol.query('(/authorinfo/personinfo)[1]') as xm from XMLTable
    
    select * from xmlTable where XMLCol.value('(/authorinfo/personinfo/firstname)[1]','nvarchar(50)') ='维春'
    
    select XMLCol.query('(/dd/a[@id>2])[1]') as xm from XMLTable
  • 相关阅读:
    WIN7右下角的声音图标不见了
    无法解决 equal to 运算中 "Chinese_PRC_BIN" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突
    查看表空间信息SQL集合
    Oracle分区表
    Oracle数据库的创建、数据导入导出
    Oracle查询出最最近一次的一条记录
    adb命令
    synergy在Windows和ubuntu 多台PC共享一套键盘鼠标
    git add 之后因为没提交正确文件需要撤销
    make clean-kernel && make kernel
  • 原文地址:https://www.cnblogs.com/kaynet/p/6387065.html
Copyright © 2011-2022 走看看