Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在表中选择本地xml文件_Sql_Xml_Sql Server 2008_Tsql_Xslt - Fatal编程技术网

Sql 在表中选择本地xml文件

Sql 在表中选择本地xml文件,sql,xml,sql-server-2008,tsql,xslt,Sql,Xml,Sql Server 2008,Tsql,Xslt,我的表中有一列被设置为xslt(XML(.),NOTNULL) 现在我使用了一个常规字符串来设置它。像这样: UPDATE table SET xslt = '<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <body> <xsl:apply-templa

我的表中有一列被设置为xslt(XML(.),NOTNULL)

现在我使用了一个常规字符串来设置它。像这样:

UPDATE table
SET xslt = 
'<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
  <body>
    <xsl:apply-templates />
  </body>
</html>
</xsl:template>
<xsl:template match="data">
<table width="400" border="1">
  <tr bgcolor="#a0acbc">
  </tr>
  <xsl:for-each select="row">
  </xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>'
WHERE ....
这可能吗?你能试试吗

   select 
      cast(x as xml)
   from 
      OPENROWSET (BULK 'C:\test\Test.xml',SINGLE_BLOB) myXml(x)

虽然可以从数据库引擎所在的服务器驱动器中读取内容,但SQL server不容易从网络上其他机器的磁盘中读取内容。在许多环境中,不允许开发人员访问运行SQL server的服务器的驱动器

不过,有几种方法可以满足您的需求:

  • 使用SSIS包加载样式表并更新表
  • 编写一个简短的程序(或要求别人编写一个),在文件中读取内容,并将内容用作SQL update语句中的参数值
  • 你有办法对任意文本文件执行样式表吗?然后编写一个样式表,用SQL update语句包装XSLT文件的内容,从而生成一个用于更新表的脚本
       select 
          cast(x as xml)
       from 
          OPENROWSET (BULK 'C:\test\Test.xml',SINGLE_BLOB) myXml(x)