zoukankan      html  css  js  c++  java
  • [翻译]使用OPENROWSET函数

    Q:我想要在一个即席查询(ad hoc query)中从一个远程的OLEDB数据源或使用批量载入(BULK LOAD)的方式将数据导入到SQL Server表内?

    A:
    您可以使用Transact-SQL中的OPENROWSET函数来获取从任何支持注册OLEDB的提供程序(registered OLD DB provider)的数据源获取数据,诸如远程SQL Server实例或Microsoft Access。如果您使用OPENROWSET来从一个SQL Server实例获取数据,那么该实例必须被配置为允许即席分布式查询。

    要将实例配置为支持即席查询,需要使用sp_configure系统存储过程来进行如下设置:

    EXEC sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    EXEC sp_configure 'Ad Hoc Distributed Queries', 1
    GO
    RECONFIGURE;
    GO

    一旦您已经配置了远程SQL Server实例,您可以使用OPENROWSET函数来查询该实例。该函数应该被包含在SELECT语句的FROM语法中。如下的语法显示了该函数的基本元素:

    OPENROWSET('provider', 'connection string', target)

    该范例说明了如何使用OPENROWSET函数进行查询:

    SELECT Employees.*
    FROM OPENROWSET(
    'SQLNCLI',
    'Server=SqlSrv1;Trusted_Connection=yes',
    'SELECT EmployeeID, FirstName, LastName, JobTitle
    FROM AdventureWorks.HumanResources.vEmployee
    ORDER BY LastName, FirstName'
    ) AS Employees

    如之前所提到的,您可以从SQL Server以外的数据源获取数据。例如,如下的SELECT语句查询了Microsoft Access数据库中的Employees表:

    SELECT Employees.*
    FROM OPENROWSET(
    'Microsoft.Jet.OLEDB.4.0',
    'C:\Data\Employees.mdb';'admin';' ',
    'SELECT EmployeeID, FirstName, LastName, JobTitle
    FROM Employees
    ORDER BY LastName, FirstName'
    ) AS Employees

    现在让我们来看一下OPENROWSET函数的其他重要功能--批量载入(Bulk Load)。为了说明其工作原理,我使用了如下的代码来创建和将Employees表导入Adventureworks数据库:

    USE AdventureWorks
    GO
    UPDATE Employees
    SET ResumeFile = (
    SELECT *
    FROM OPENROWSET(BULK 'C:\Data\Employee1.docx', SINGLE_BLOB)
    AS ResumeContent)
    WHERE EmployeeID = 1

    关于该函数的更多详情,请参考SQL Server联机丛书的"OPENROWSET (Transact-SQL)"主体。

  • 相关阅读:
    PHP+MySQL实现海量数据导入导出的总结:is_numbric函数的坑
    【PHP开发规范】继承与扩展:PSR-2 编码风格规范
    【PHP开发规范】老生常谈的编码开发规范你懂多少?
    【PHP面试题】通俗易懂的两个面试必问的排序算法讲解:冒泡排序和快速排序
    php数组函数array_column:不用循环就能提取多维数组内容
    php使用urlencode对中文编码而引出的问题:urlencode和rawurlencode的区别
    table-tree vs stock vs whiteboard
    PDF解析
    山灵up4
    Devops之CI/CD
  • 原文地址:https://www.cnblogs.com/galaxyyao/p/1452320.html
Copyright © 2011-2022 走看看