大容量导入和导出数据 (SQL Server)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)
SQL Server 支持从 SQL Server 表批量导出数据(批量数据),以及将批量数据导入 SQL Server 表或未分区的视图。
- 批量导出是指将数据从 SQL Server 表复制到数据文件。
- 批量导入是指将数据从数据文件加载到 SQL Server 表。 例如,您可以将数据从 Microsoft Excel 应用程序导出到数据文件,然后将这些数据大容量导入到 SQL Server 表中。
批量导入和导出数据的方法
SQL Server 支持从 SQL Server 表批量导出数据,以及将数据批量导入 SQL Server 表或未分区的视图。 可以使用下列基本方法:
方法 | 说明 | 导入数据 | 导出数据 |
---|---|---|---|
bcp 实用工具 | 大容量导出数据和大容量导入数据并生成格式化文件的命令行实用工具 (Bcp.exe)。 | 是 | 是 |
BULK INSERT 语句 | 将数据直接从数据文件导入数据库表或未分区视图的 Transact-SQL 语句。 | 是 | 否 |
INSERT ... SELECT * FROM OPENROWSET(BULK...) 语句 | 通过在 INSERT 语句中指定 OPENROWSET(BULK…) 函数来选择数据,从而使用 OPENROWSET 大容量行集提供程序将数据大容量导入 Transact-SQL 表的 SQL Server 语句。 | 是 | 否 |
SQL Server 导入和导出向导 | 此向导可创建简单包,以便导入和导出介于多种常用数据格式(包括数据库、电子表格和文本文件)的数据。 | 是 | 是 |
重要
有关将逗号分隔值 (CSV) 文件用作将数据批量导入到 SQL Server 的数据文件的规则,请参阅准备用于批量导出或导入的数据 (SQL Server)。
注意
Azure Synapse Analytics 仅支持使用 bcp 实用工具导入和导出带分隔符的文件。
格式化文件
bcp 实用工具、BULK INSERT 和 INSERT ... SELECT * FROM OPENROWSET(BULK…) 都支持使用专门的格式化文件来存储数据文件中每个字段的格式信息。 格式化文件还可以包含相应的 SQL Server 表的有关信息。 格式化文件可以用于提供从 SQL Server 实例批量导出数据和向其中批量导入数据时所需的所有格式信息。
重要
不能使用 BCP 将数据从 Azure Blob 存储导入,也不能将数据从 Azure Blob 存储导出到 Azure SQL 数据库。 使用 BULK INSERT 或 OPENROWSET 从 Azure Blob 存储导入数据或将数据导出到 Azure Blob 存储。
格式化文件提供了一种解释导入期间数据文件中数据的格式以及设置导出期间数据文件中数据格式的灵活方式。 这种灵活性使得解释数据时无需编写专用代码,也无需为满足 SQL Server 或外部应用程序的特殊需要而重新设置数据的格式。 例如,如果将要加载的数据大容量导出到某个需要逗号分隔值的应用程序,则可以使用格式化文件将逗号作为字段终止符插入导出的数据中。
SQL Server 支持两种格式化文件:XML 格式化文件和非 XML 格式化文件。
bcp 实用工具 是唯一能够生成格式化文件的工具。 有关详细信息,请参阅创建格式化文件 (SQL Server)。 有关格式化文件的详细信息,请参阅导入或导出数据的格式化文件 (SQL Server)。
注意
如果在大容量导出或导入操作期间未提供格式化文件,您可以在命令行处覆盖默认格式。