Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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 server OPENXML vs OPENROWSET和xml数据类型_Sql Server_Xml - Fatal编程技术网

Sql server OPENXML vs OPENROWSET和xml数据类型

Sql server OPENXML vs OPENROWSET和xml数据类型,sql-server,xml,Sql Server,Xml,为什么您要使用OPENXML而不是OPENROWSET(大容量“文件”,单块)并转换为xml数据类型?我认为您在这里比较的是完全不同的东西: OPENROWSET只需将一个文件作为单个blob导入到磁盘上即可—如果确实需要将该文件内容作为一大块信息—如果您希望将整个文件内容存储为一个XML字段,这将非常有用 OPENXML非常不同-它将打开并解释XML文件,并将其转换为行集-它将根据源XML文件为您提供数据行和列,然后您可以将该信息存储在表中-行和列中。您不会将XML作为一个大的块来获取,但是

为什么您要使用OPENXML而不是OPENROWSET(大容量“文件”,单块)并转换为xml数据类型?

我认为您在这里比较的是完全不同的东西:

  • OPENROWSET只需将一个文件作为单个blob导入到磁盘上即可—如果确实需要将该文件内容作为一大块信息—如果您希望将整个文件内容存储为一个XML字段,这将非常有用

  • OPENXML非常不同-它将打开并解释XML文件,并将其转换为行集-它将根据源XML文件为您提供数据行和列,然后您可以将该信息存储在表中-行和列中。您不会将XML作为一个大的块来获取,但是它已经被“切碎”成了行和列

因此,这实际上取决于您的需求是什么—如果您需要XML作为一个大数据块并存储它—请使用OPENROWSET


如果需要XML中表示为列和行的数据,请使用OPENXML(或者:首先使用OPENROWSET将XML作为一个整体导入,然后使用SQL Server 2005中的XQuery函数,并在加载后将其分解)

您的最后一句话说明了为什么我认为这两种方法可以做同样的事情:加载和查询xml。假设你想查询它——而不仅仅是存储它——为什么你会选择一个而不是另一个呢?@Daniel:就我个人而言,我发现OPENROWSET的大容量负载,然后使用XQuery查询(或者选择性地分解)XML更简单的路径XML数据类型(结合OPENROWSET大容量)似乎取代了、过时的OPENXML。嗨,十年后,但我正在创建一个XML课程,并希望正确地实现这一点。当数据在磁盘上时会使用OPENROWSET吗?当数据已经在内存中时会使用OPENXML吗?啊,我现在知道OPENROWSET也可以处理.csv文件(我猜是任何OLEDB源代码)-我以前不知道这一点。