使用 BULK INSERT 或 OPENROWSET(BULK...) 导入批量数据 (SQL Server)

本主题适用于: yesSQL Server(从 2016 开始)noAzure SQL 数据库noAzure SQL 数据仓库no并行数据仓库

本主题概述了如何使用 Transact-SQL BULK INSERT 语句和 INSERT...SELECT * FROM OPENROWSET(BULK...) 语句将数据从某一数据文件大容量导入到 SQL Server 表中。 本主题还说明了使用 BULK INSERT 和 OPENROWSET(BULK...) 以及使用这些方法从远程数据源大容量导入数据的安全注意事项。

System_CAPS_ICON_note.jpg 说明


在使用 BULK INSERT 或 OPENROWSET(BULK ) 时,请务必了解 SQL Server 版本是如何处理模拟的。 有关详细信息,请参阅本主题后面的“安全注意事项”。

BULK INSERT 将数据从数据文件加载到表中。 此功能与 bcp 命令的 in 选项提供的功能相似,但是数据文件将由 SQL Server 进程读取。 有关 BULK INSERT 语法的说明,请参阅 BULK INSERT (Transact-SQL)

示例

有关 BULK INSERT 示例,请参阅:

通过调用 OPENROWSET 函数并指定 BULK 选项,访问 OPENROWSET 大容量行集提供程序。 使用 OPENROWSET(BULK...) 函数可以通过 OLE DB 访问接口连接到远程数据源(如数据文件)以访问远程数据。

若要大容量导入数据,请从 INSERT 语句中的 SELECT...FROM 子句调用 OPENROWSET(BULK...)。 大容量导入数据的基本语法如下:

INSERT ... SELECT * FROM OPENROWSET(BULK...)

在 INSERT 语句中使用时,OPENROWSET(BULK...) 支持表提示。 BULK 子句除了接受 TABLOCK 等常规表提示之外,还可以接受下列专用表提示:IGNORE_CONSTRAINTS(仅忽略 CHECK 约束)、IGNORE_TRIGGERS、KEEPDEFAULTS 和 KEEPIDENTITY。 有关详细信息,请参阅表提示 (Transact-SQL)

有关 BULK 选项的更多使用信息,请参阅 OPENROWSET (Transact-SQL)

示例

有关 INSERT...SELECT * FROM OPENROWSET(BULK...) 语句的示例,请参阅下列主题:

如果用户使用的是 SQL Server 登录名,则系统将使用 SQL Server 进程帐户的安全配置文件。 使用 SQL Server 身份验证的登录名不能在数据库引擎外部进行身份验证。 因此,当 BULK INSERT 命令由使用 SQL Server 身份验证的登录名启动时,使用 SQL Server 进程帐户(SQL Server 数据库引擎服务使用的帐户)的安全上下文建立到数据的连接。 要成功读取源数据,您必须授予 SQL Server 数据库引擎使用的帐户访问源数据的权限。 与此相反,如果 SQL Server 用户使用 Windows 身份验证登录,则该用户只能读取用户帐户可以访问的那些文件,而不考虑 SQL Server 进程的安全配置文件。

例如,假设用户使用 Windows 身份验证登录到某个 SQL Server 实例。 对于能够使用 BULK INSERT 或 OPENROWSET 将数据从数据文件导入 SQL Server 表中的用户,用户帐户需要具有数据文件的读取权限。 有了数据文件的访问权限,即使 SQL Server 进程没有访问该文件的权限,用户也可以将数据从文件导入表中。 用户无需将文件访问权限授予 SQL Server 进程。

SQL Server 和 Microsoft Windows,使得一个 SQL Server 实例可以通过转发已经过身份验证的 Windows 用户的凭据来连接到另一个 SQL Server 实例。 这种安排称为“模拟” 或“委托” 。 在使用 BULK INSERT 或 OPENROWSET 时,请务必了解 SQL Server 版本是如何处理用户模拟的安全性的。 用户模拟允许数据文件保存在 SQL Server 进程或用户所在的计算机以外的另一台计算机上。 例如,如果 Computer_A 上的用户具有对Computer_B 上的数据文件的访问权限,而且凭据委托已设置妥当,则用户可以连接到运行在 Computer_C 上的 SQL Server 实例,访问Computer_B 中的数据文件以及将数据从该文件大容量导入到 Computer_C 中的表中。

若要使用 BULK INSERT 或 INSERT...SELECT * FROM OPENROWSET(BULK...) 从其他计算机中大容量导入数据,必须在两台计算机之间共享数据文件。 指定共享数据文件时,请使用它的通用命名约定 (UNC) 名称,其一般形式为 \\服务器名\共享名\路径\文件名。 此外,用来访问该数据文件的帐户必须具有读取远程磁盘上的文件所需的权限。

例如,下面的 BULK INSERT 语句会将名为 SalesOrderDetail 的数据文件中的数据大容量导入到 AdventureWorks 数据库的 newdata.txt表。 此数据文件驻留在系统 \dailyorders 的 salesforce 网络共享目录下的 computer2 共享文件夹中。

BULK INSERT AdventureWorks2012.Sales.SalesOrderDetail  
   FROM '\\computer2\salesforce\dailyorders\neworders.txt';  
GO  

System_CAPS_ICON_note.jpg 说明


此限制不适用于 bcp 实用工具,因为客户端独立于 SQL Server 读取文件。

INSERT (Transact-SQL)
SELECT 子句 (Transact-SQL)
批量导入和导出数据 (SQL Server)
OPENROWSET (Transact-SQL)
SELECT (Transact-SQL)
FROM (Transact-SQL)
bcp 实用工具
BULK INSERT (Transact-SQL)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server 2012 Data Integration Recipes provides focused and practical solutions to real world problems of data integration. Need to import data into SQL Server from an outside source? Need to export data and send it to another system? SQL Server 2012 Data Integration Recipes has your back. You'll find solutions for importing from Microsoft Office data stores such as Excel and Access, from text files such as CSV files, from XML, from other database brands such as Oracle and MySQL, and even from other SQL Server databases. You'll learn techniques for managing metadata, transforming data to meet the needs of the target system, handling exceptions and errors, and much more. What DBA or developer isn't faced with the need to move data back and forth? Author Adam Aspin brings 10 years of extensive ETL experience involving SQL Server, and especially satellite products such as Data Transformation Services and SQL Server Integration Services. Extensive coverage is given to Integration Services, Microsoft's flagship tool for data integration in SQL Server environments. Coverage is also given to the broader range of tools such as OPENDATASOURCE, linked servers, OPENROWSET, Migration Assistant for Access, BCP Import, and BULK INSERT just to name a few. If you're looking for a resource to cover data integration and ETL across the gamut of Microsoft's SQL Server toolset, SQL Server 2012 Data Integration Recipes is the one book that will meet your needs. * Provides practical and proven solutions towards creating resilient ETL environments * Clearly answers the tough questions which professionals ask * Goes beyond the tools to a thorough discussion of the underlying techniques * Covers the gamut of data integration, beyond just SSIS * Includes example databases and files to allow readers to test the recipes
SQL Server 2008高级程序设计 4/6 SQL Server 2008 2010 高级程序设计 作者:(美)维埃拉 著,杨华,腾灵灵 译 出版社:清华大学 出版日期:2010-4-1 ISBN:9787302222729 字数:1250000 页码:730 -------------------------------------------------------------------------------- 内容提要 -------------------------------------------------------------------------------- Microsoft SQL Server 2008极大地完善了数据库引擎的核心组件,也改变了数据库应用程序的构建方式。《SQL Server 2008高级程序设计》由世界顶尖SQL Server权威专家Robert Vieira编写,旨在指导您熟练运用一系列日趋复杂的功能,助您更高效地管理数据。   本书首先介绍SQL Server 2008的新功能,然后在更详实的示例代码的引导下全面深入地展开论述,讨论了如何编写复杂查询、构建各种数据结构以及提高应用程序性能,还讲述了如何管理高级脚本和数据库以及如何确定和改正脚本错误。   本书提供了快速创建和部署数据驱动的解决方案来满足业务需求的信息,介绍了新数据类型、索引结构、管理功能和高级时区处理等重要内容,掌握这些知识后,您将使自己的数据库发挥㈩最大功效。   主要内容   ◆除规范化外的数据设计技巧   ◆尽量提高应用程序运行速度的方法   ◆有关存储过程和用户定义函数的全部内容   ◆存储过程的高级处理方法   ◆报表服务和集成服务的用法   ◆提高数据库安全性的提示信息   ◆如何利用XML和XQuery支持   ◆通过修改特定数据值进行推理分析的步骤   读者对象   本书面向想要学用所有SQL Server 2008功能的有经验的开发人员。 目录 -------------------------------------------------------------------------------- 第1章 回顾SQL Server中的对象  1.1 数据库的构成  1.2 数据库对象概述  1.3 SQL Server数据类型  1.4 SQL Server对象标识符  1.5 小结 第2章 工具  2.1 联机丛书  2.2 SQL Server配置管理器  2.3 SQL Server Management Studio  2.4 SQL Server Business Intelligence Development Studio  2.5 SQL Server集成服务(SSIS)  2.6 Reporting Services  2.7 BulkCopy Program(bcp)  2.8 SQL Server Profiler  2.9 sqlcmd  2.10 小结 第3章 提出更好的问题:高级查询  3.1 子查询概述  3.2 构建嵌套子查询  3.3 相关子查询  3.4 派生表  3.5 EXISTS运算符  3.6 INTERSECT和EXCEPT运算符  3.7 通用表表达式(CTE)  3.8 递归查询  3.9 合并  3.10 利用外部调用完成复杂操作  3.11 性能考虑  3.12 小结 第4章 XML集成  4.1 XML数据类型  4.2 提取XML格式的关系数据  4.3 有关XML索引的提示  4.4 层次数据概述  4.5 小结 第5章 细心推敲,大胆设计  5.1 进一步了解规范化  5.2 关系  5.3 图表  5.4 逻辑设计与物理设计  5.5 通过经典的BLOB处理基于文件的信息  5.6 子类别  5.7 数据库重用  5.8 反规范化  5.9 通过分区方法进行扩展  5.10 SQL Server关系图工具  5.11 关于日期列  5,12 小结 第6章 核心存储和索引结构  6.1 SQL Server存储  6.2 理解索引  6.3 创建、修改和删除索引  6.4 明智地决定何时何地使用何种索引  6.5 维护索引  6.6 小结 第7章 更高级的索引结构  7.1 XML索引  7.2 用户定义的数据类型  7.3 层次数据  7.4 空间数据  7.5 文件流  7.6 启用文件流  7.7表压缩  7.8 小结 第8章 视图  8.1 回顾视图语法  8.2 更复杂
完整清晰 PDF 扫描文档 这个PDF文件是我花钱买来的,现在为了挣积分,拿出来与大家分享!! -------------------------------------------------------------------------------- SQL Server 2008高级程序设计 2/6 SQL Server 2008 2010 高级程序设计 作者:(美)维埃拉 著,杨华,腾灵灵 译 出版社:清华大学 出版日期:2010-4-1 ISBN:9787302222729 字数:1250000 页码:730 -------------------------------------------------------------------------------- 内容提要 -------------------------------------------------------------------------------- Microsoft SQL Server 2008极大地完善了数据库引擎的核心组件,也改变了数据库应用程序的构建方式。《SQL Server 2008高级程序设计》由世界顶尖SQL Server权威专家Robert Vieira编写,旨在指导您熟练运用一系列日趋复杂的功能,助您更高效地管理数据。   本书首先介绍SQL Server 2008的新功能,然后在更详实的示例代码的引导下全面深入地展开论述,讨论了如何编写复杂查询、构建各种数据结构以及提高应用程序性能,还讲述了如何管理高级脚本和数据库以及如何确定和改正脚本错误。   本书提供了快速创建和部署数据驱动的解决方案来满足业务需求的信息,介绍了新数据类型、索引结构、管理功能和高级时区处理等重要内容,掌握这些知识后,您将使自己的数据库发挥㈩最大功效。   主要内容   ◆除规范化外的数据设计技巧   ◆尽量提高应用程序运行速度的方法   ◆有关存储过程和用户定义函数的全部内容   ◆存储过程的高级处理方法   ◆报表服务和集成服务的用法   ◆提高数据库安全性的提示信息   ◆如何利用XML和XQuery支持   ◆通过修改特定数据值进行推理分析的步骤   读者对象   本书面向想要学用所有SQL Server 2008功能的有经验的开发人员。 目录 -------------------------------------------------------------------------------- 第1章 回顾SQL Server中的对象  1.1 数据库的构成  1.2 数据库对象概述  1.3 SQL Server数据类型  1.4 SQL Server对象标识符  1.5 小结 第2章 工具  2.1 联机丛书  2.2 SQL Server配置管理器  2.3 SQL Server Management Studio  2.4 SQL Server Business Intelligence Development Studio  2.5 SQL Server集成服务(SSIS)  2.6 Reporting Services  2.7 BulkCopy Program(bcp)  2.8 SQL Server Profiler  2.9 sqlcmd  2.10 小结 第3章 提出更好的问题:高级查询  3.1 子查询概述  3.2 构建嵌套子查询  3.3 相关子查询  3.4 派生表  3.5 EXISTS运算符  3.6 INTERSECT和EXCEPT运算符  3.7 通用表表达式(CTE)  3.8 递归查询  3.9 合并  3.10 利用外部调用完成复杂操作  3.11 性能考虑  3.12 小结 第4章 XML集成  4.1 XML数据类型  4.2 提取XML格式的关系数据  4.3 有关XML索引的提示  4.4 层次数据概述  4.5 小结 第5章 细心推敲,大胆设计  5.1 进一步了解规范化  5.2 关系  5.3 图表  5.4 逻辑设计与物理设计  5.5 通过经典的BLOB处理基于文件的信息  5.6 子类别  5.7 数据库重用  5.8 反规范化  5.9 通过分区方法进行扩展  5.10 SQL Server关系图工具  5.11 关于日期列  5,12 小结 第6章 核心存储和索引结构  6.1 SQL Server存储  6.2 理解索引  6.3 创建、修改和删除索引  6.4 明智地决定何时何地使用何种索引  6.5 维护索引  6.6 小结 第7章

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值