' provider_name '

字符串,表示在注册表中指定的 OLE DB 访问接口的友好名称(或 PROGID)。provider_name 没有默认值。

' datasource '

对应于特定 OLE DB 数据源的字符串常量。datasource 是要传递给访问接口的 IDBProperties 接口的 DBPROP_INIT_DATASOURCE 属性,该属性用于初始化访问接口。通常,此字符串包含数据库文件的名称、数据库服务器的名称,或者访问接口能理解的用于定位数据库的名称。

' user_id '

字符串常量,它是传递给指定 OLE DB 访问接口的用户名。user_id 为连接指定安全上下文,并作为 DBPROP_AUTH_USERID 属性传入以初始化访问接口。user_id 不能是 Microsoft Windows 登录名。

' password '

字符串常量,它是传递给 OLE DB 访问接口的用户密码。在初始化访问接口时,password 作为 DBPROP_AUTH_PASSWORD 属性传入。password 不能是 Microsoft Windows 密码。

' provider_string '

访问接口特定的连接字符串,作为 DBPROP_INIT_PROVIDERSTRING 属性传入以初始化 OLE DB 访问接口。通常 provider_string 封装初始化访问接口所需的所有连接信息。有关 SQL Server Native Client OLE DB 访问接口可识别的关键字列表,请参阅初始化和授权属性

catalog

指定对象所在的目录或数据库的名称。

schema

架构的名称或指定对象的对象所有者名称。

object

对象名,它唯一地标识出将要操作的对象。

' query '

字 符串常量,发送到访问接口并由访问接口执行。SQL Server 的本地实例不处理该查询,但处理由访问接口返回的查询结果(传递查询)。有些访问接口并不通过表名而是通过命令语言提供其表格格式数据,将传递查询用于这 些访问接口是非常有用的。只要查询访问接口支持 OLE DB Command 对象及其强制接口,那么在远程服务器上就支持传递查询。有关详细信息,请参阅 SQL Server Native Client (OLE DB) 参考

BULK

使用 OPENROWSET 的 BULK 行集访问接口读取文件中的数据。在 SQL Server 中,OPENROWSET 无需将数据文件中的数据加载到目标表,便可读取这些数据。这样便可在单个 SELECT 语句中使用 OPENROWSET。

BULK 选项的参数可对何时开始和结束数据读取、如何处理错误以及如何解释数据提供有效控制。例如,可以指定以类型为 varbinaryvarcharnvarchar 的单行单列行集的形式读取数据文件。默认行为详见随后的参数说明。

有关如何使用 BULK 选项的信息,请参阅本主题后面部分的“备注”。有关 BULK 选项所需权限的信息,请参阅本主题后面的“权限”。

OPENROWSET (Transact-SQL)注意:
当用于以完整恢复模式导入数据时,OPENROWSET (BULK ...) 不优化日志记录。

有关为大容量导入准备数据的信息,请参阅准备用于大容量导出或大容量导入的数据

' data_file '

数据文件的完整路径,该文件的数据将被复制到目标表中。

FORMATFILE = 'format_file_path'

指定格式化文件的完整路径。SQL Server 支持两种格式化文件类型:XML 和非 XML。

格式化文件对定义结果集中的列类型是必需的。唯一的例外情况是指定 SINGLE_CLOB、SINGLE_BLOB 或 SINGLE_NCLOB 时;在这种情况下,不需要格式化文件。

有关格式化文件的信息,请参阅使用格式化文件大容量导入数据

< bulk_options>

指定 BULK 选项的一个或多个参数。

CODEPAGE = { 'ACP '| 'OEM '| 'RAW '| 'code_page' }

指定该数据文件中数据的代码页。仅当数据含有字符值大于 127 或小于 32 的 charvarchartext 列时,CODEPAGE 才是适用的。

OPENROWSET (Transact-SQL)注意:
建议在格式化文件中为每个列指定一个排序规则名称。
CODEPAGE 值 说明

ACP

将数据类型为 charvarchartext 的列由 ANSI/Microsoft Windows 代码页 (ISO 1252) 转换为 SQL Server 代码页。

OEM(默认值)

将数据类型为 charvarchartext 的列由系统 OEM 代码页转换为 SQL Server 代码页。

RAW

不执行从一个代码页到另一个代码页的转换。这是执行最快的选项。

code_page

指示数据文件中字符数据已编码的源代码页,例如 850。

OPENROWSET (Transact-SQL)重要提示:
SQL Server 不支持代码页 65001(UTF-8 编码)。
ERRORFILE = 'file_name'

指定用于收集格式有误且不能转换为 OLE DB 行集的行的文件。这些行将按原样从数据文件复制到此错误文件中。

错误文件在开始执行命令时创建。如果该文件已存在,将引发一个错误。此外,还创建了一个扩展名为 .ERROR.txt 的控制文件。此文件引用错误文件中的每一行并提供错误诊断。纠正错误后即可加载数据。

FIRSTROW = first_row

指定要加载的第一行的行号。默认值为 1。这表示指定数据文件中的第一行。通过对行终止符进行计数来确定行号。FIRSTROW 从 1 开始。

LASTROW = last_row

指定要加载的最后一行的行号。默认值为 0。这表示指定数据文件中的最后一行。

MAXERRORS = maximum_errors

指定格式化文件中定义的、在 OPENROWSET 引发异常之前可以发生的语法错误或格式有误行的最大数目。在达到 MAXERRORS 之前,OPENROWSET 会忽略每个错误行,不加载它,并将其计为一个错误。

maximum_errors 的默认值为 10。

OPENROWSET (Transact-SQL)注意:
MAX_ERRORS 不适用于 CHECK 约束,也不适用于 moneybigint 数据类型的转换。
ROWS_PER_BATCH = rows_per_batch

指定数据文件中近似的数据行数量。该值应与实际行数相同。

OPENROWSET 始终以单批形式导入数据文件。但如果将 rows_per_batch 的值指定为 > 0,则查询处理器在查询计划中分配资源时将使用 rows_per_batch 的值作为提示。

默认情况下,ROWS_PER_BATCH 未知。指定 ROWS_PER_BATCH = 0 相当于忽略 ROWS_PER_BATCH。

ORDER ( { column [ ASC | DESC ] } [ ,...n ] [ UNIQUE ] )

一个用于指定数据文件中数据的排序方式的可选提示。默认情况下,大容量操作假定数据文件未排序。如果查询优化器能够利用指定顺序来生成更有效的查询计划,则性能可能会得到改善。指定一个排序可以取得益处的示例包括:

  • 将行插入到具有聚集索引的表,其中行集数据按聚集索引键进行排序。
  • 将行集与另一个表联接,其中排序列和联接列匹配。
  • 通过排序列聚合行集数据。
  • 将行集用作查询的 FROM 子句中的源表,其中排序列和联接列匹配。

UNIQUE 指定数据文件不能有重复条目。

如果数据文件中的实际行没有根据指定的顺序进行排序,或者如果指定了 UNIQUE 提示并且存在重复键,则返回错误。

使用 ORDER 时列别名是必需的。列别名列表必须引用由 BULK 子句正在访问的派生表。在 ORDER 子句中指定的列名将引用此列别名列表。不能指定大值类型(varchar(max)nvarchar(max)varbinary(max)xml)和大型对象 (LOB) 类型(textntextimage)列。

SINGLE_BLOB

data_file 的内容作为类型为 varbinary(max) 的单行单列行集返回。

OPENROWSET (Transact-SQL)重要提示:
我们建议您仅使用 SINGLE_BLOB 选项(而不是 SINGLE_CLOB 和 SINGLE_NCLOB)导入 XML 数据,因为只有 SINGLE_BLOB 支持所有的 Windows 编码转换。
SINGLE_CLOB

通过以 ASCII 格式读取 data_file,使用当前数据库的排序规则将内容作为类型为 varchar(max) 的单行单列行集返回。

SINGLE_NCLOB

通过以 UNICODE 格式读取 data_file,使用当前数据库的排序规则将内容作为类型为 nvarchar(max) 的单行单列行集返回。

相关文章: