SuperAPI AI 工具集

bulk-load-and-bulk-copy

智能体与模型

查看项目

更新于 10-16 00:31

技能介绍

用途:把数据快速加载进 Azure SQL Database 中已存在的表,并帮助选择正确的加载路径。该技能也明确区分“加载数据”与“导入整个数据库”。

主要能力与路线选择:文件已在 Azure Blob Storage 时,用带 DATA_SOURCE 的 BULK INSERT 或 OPENROWSET(BULK ...),这是服务器读取文件的唯一情形;文件在客户端机器时用 bcp,由客户端流式发送;数据已在运行中的应用里时,使用该语言的批量 API,不要先写文件再读回;迁移整个数据库而非单表数据时用 sqlpackage。

关键限制:Azure SQL Database 拒绝本地或 UNC 路径,BULK INSERT 与 OPENROWSET 均会报 Msg 12713;唯一数据源是 Azure Storage,可用 Microsoft Entra ID、SAS 令牌或托管标识认证;不支持路径通配符和 FORMAT = 'PARQUET';不支持最小日志记录,真正限制吞吐的是事务日志速率调控器,表现为 LOG_RATE_GOVERNOR(弹性池中为 POOL_LOG_RATE_GOVERNOR)等待,TABLOCK 和更大的 BATCHSIZE 无法提高该上限。

必要用法要点:托管标识需先建数据库范围凭据与外部数据源,例如 CREATE DATABASE SCOPED CREDENTIAL BlobCred WITH IDENTITY = 'Managed Identity'; 与 CREATE EXTERNAL DATA SOURCE MyBlob WITH (TYPE = BLOB_STORAGE, LOCATION = '...', CREDENTIAL = BlobCred);。FROM 中的路径相对于 LOCATION。MAXERRORS 与 -m 默认均为 10,未设置会丢弃坏行却仍报成功。ERRORFILE 需配 ERRORFILE_DATA_SOURCE,且目标文件不能已存在。SAS 令牌不带前导 ?,至少含 srt=o&sp=r,日期为 UTC。调用者需要 INSERT 和 ADMINISTER DATABASE BULK OPERATIONS。bcp 位于引擎容器内,路径为 /opt/mssql-tools18/bin/bcp,-G 为 Entra 认证,-T 不受支持,-F 2 可跳过表头,-b 分批提交,-e 输出被拒行,-h "TABLOCK" 仅限 Windows。.NET 用 SqlBulkCopy,可设 BatchSize、BulkCopyTimeout、EnableStreaming 与列映射;Python pyodbc 的 fast_executemany 无批大小、需自行分块;Node.js mssql 每列须显式声明可空性。

验证:客户端退出码 0 不代表数据已落库,应用 sqlcmd 执行 SELECT COUNT_BIG(*) 核对行数;可通过 sys.dm_user_db_resource_governance 的 primary_max_log_rate 与 sys.dm_db_wait_stats 中 LOG_RATE_GOVERNOR 判断是否被限流。本地容器无这些资源治理视图,无法观测日志速率调控器,因此不可用本地数值估算加载规模。

适用场景:Azure SQL Database 上的批量导入与性能排查。资料未提供价格、收费与完整安装步骤等信息。