如何将含30万+INSERT语句的文件批量执行到Azure SQL数据库?
批量插入30万条数据到Azure SQL数据库的优化方案
当然可以直接执行包含30万条INSERT的脚本到Azure SQL,但直接全量执行原始脚本大概率会遇到超时、事务日志暴涨、执行效率极低的问题,更推荐用以下几种高效方案替代手动分批:
方案一:优化SSMS脚本执行
- 调整SSMS执行参数:
- 打开「工具→选项→查询执行→SQL Server→高级」,将「查询超时时间」设为0(无限制),同时调大「连接超时时间」;
- 打开脚本后,在开头加
BEGIN TRANSACTION;,每1万条INSERT后插入COMMIT TRANSACTION; BEGIN TRANSACTION;,结尾补COMMIT;,拆分事务避免日志溢出。
- 直接执行脚本:点击SSMS的「执行」按钮,无需手动分批复制。
方案二:使用批量导入工具(推荐)
1. bcp命令行工具
把INSERT语句转换为CSV/TSV格式的数据文件后,用bcp批量导入,速度比单条INSERT快数倍:
bcp YourDatabase.dbo.YourTable in "C:\data\your_data.csv" -S yourserver.database.windows.net -U username -P password -d YourDatabase -c -t, -r\n
参数说明:
-c:使用字符格式导入-t,:指定列分隔符为逗号-r\n:指定行分隔符为换行
2. Azure Data Studio导入向导
连接到Azure SQL数据库后:
- 右键目标表 → 「导入数据」
- 选择转换好的CSV/TSV文件,按向导配置列映射、导入选项,工具会自动完成批量导入,无需编写复杂脚本。
方案三:临时调整数据库配置加速导入
- 临时升级Azure SQL的计算资源(DTU/VCore),导入完成后再降级,减少执行时间;
- 导入前禁用目标表的非聚集索引、外键约束,导入完成后重新启用并重建索引,大幅提升插入效率。
内容的提问来源于stack exchange,提问作者Frederic Le Guen
相关产品推荐
相关产品推荐

