【问题标题】:OPENXML vs OPENROWSET and xml data typeOPENXML vs OPENROWSET 和 xml 数据类型
【发布时间】:2010-11-28 03:49:33
【问题描述】:

您为什么要使用 OPENXML 而不是 OPENROWSET (BULK 'file', SINGLE_BLOB) 并转换为 xml 数据类型?

【问题讨论】:

    标签: sql-server xml


    【解决方案1】:

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

    • OPENROWSET 只是简单地将磁盘上的文件作为单个 blob 导入 - 如果您确实需要将该文件内容作为单个大块信息,这非常有用 - 如果您想存储整个文件内容作为单个 XML 字段

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

    所以这真的取决于您的需求 - 如果您需要将 XML 作为一个大块并存储它 - 使用 OPENROWSET

    如果您需要将 XML 中的数据表示为列和行,请使用 OPENXML(或者:先使用 OPENROWSET 将 XML 整体导入,然后使用 SQL 中的 XQuery 函数Server 2005 及以上版本,一旦加载就可以粉碎它)

    【讨论】:

    • 您的最后一句话说明了为什么我将这些视为做同一件事的两种方式:加载和查询 xml。假设您要查询它——而不仅仅是存储它——为什么要选择一个而不是另一个?
    • @Daniel:就个人而言,我发现使用 OPENROWSET 进行批量加载,然后使用 XQuery 以更简单的方式查询(或选择性地分解)XML
    • xml 数据类型(与 OPENROWSET BULK 结合)似乎取代并过时的 OPENXML。
    • 嗨,10 年过去了,但我正在创建一门 XML 课程,并且想把它做好。当数据在磁盘上时使用OPENROWSET,当数据已经在内存中时使用OPENXML?
    • 啊,我现在看到 OPENROWSET 也可以处理 .csv 文件(我猜任何 OLEDB 源)——我以前不知道。
    猜你喜欢
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 2021-11-13
    • 2016-12-25
    • 2016-03-07
    相关资源
    最近更新 更多