批量导入和导出数据(SQL Server)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics分析平台系统(PDW)Microsoft Fabric中的SQL数据库

SQL Server 支持从 SQL Server 表批量导出数据(批量数据),以及将批量数据导入 SQL Server 表或未分区的视图。

  • 批量导出是指将数据从 SQL Server 表复制到数据文件。

  • 批量导入是指将数据从数据文件加载到 SQL Server 表。 例如,您可以将数据从 Microsoft Excel 应用程序导出到数据文件,然后将这些数据大容量导入到 SQL Server 表中。

批量导入和导出数据的方法

SQL Server 支持从SQL Server表批量导出数据,并支持将数据批量导入SQL Server表或非分区视图。 可以使用下列基本方法:

Method Description 导入数据 导出数据
bcp 实用工具 一个命令行工具(bcp.exe)可批量导出和导入数据,并生成格式文件。 Yes Yes
BULK INSERT 语句 将数据直接从数据文件导入数据库表或未分区视图的 Transact-SQL 语句。 Yes No
INSERT ... SELECT * FROM OPENROWSET(BULK...) 语句 一种 Transact-SQL 语句,它通过在 INSERT 语句中指定 OPENROWSET(BULK...) 函数来选择数据,并使用 OPENROWSET 批量行集提供程序将数据批量导入到 SQL Server 表中。 Yes No
SQL Server 导入和导出向导 向导创建了基本包,用于在多种流行数据格式之间导入和导出数据,包括数据库、电子表格和文本文件。 Yes Yes

关于使用逗号分隔值(CSV)文件作为批量导入 SQL Server 数据文件的规则,请参见“准备批量导出或导入数据”。

Note

Azure Synapse Analytics 仅支持使用 bcp 实用工具导入和导出分隔文件。

格式化文件

bcp 工具BULK INSERTOPENROWSET BULK 都支持使用专用格式文件,将每个字段的格式信息存储在数据文件中。 格式化文件还可以包含相应的 SQL Server 表的有关信息。 使用格式文件提供从 SQL Server 实例批量导出数据以及向其批量导入数据所需的全部格式信息。

Important

不能使用bcp将数据从 Azure Blob 存储 导入到 Azure SQL 数据库,也不能将数据从 Azure SQL 数据库 导出到 Azure Blob 存储。 使用BULK INSERTOPENROWSET BULK 导入或导出到Azure Blob 存储。

格式化文件提供了一种灵活的方式,可以在导入时解释数据文件中的数据,同时在导出时也能格式化数据文件中的数据。 这种灵活性消除了编写专用代码来解释数据或根据 SQL Server 或外部应用程序的具体需求进行格式化的需求。 例如,如果你批量导出数据加载到需要逗号分隔值的应用程序中,使用格式文件在导出数据中插入逗号作为字段终止符。

SQL Server 支持两种格式文件:XML 格式文件和非 XML 格式文件。

bcp 实用工具 是唯一能够生成格式化文件的工具。 更多信息请参见 使用bcp创建格式文件。 有关格式文件的更多信息,请参见 “格式化文件以导入或导出数据”。

Note

如果你在批量导出或导入操作中没有提供格式文件,可以在命令行覆盖默认格式化。