使用 Sqlcmd 高效导入大型 SQL Server 数据库脚本 (.sql)_sqlcmd导入sql文件
使用 Sqlcmd 高效导入大型 SQL Server 数据库脚本 (.sql)
核心痛点:当 SQL Server 的数据库备份脚本文件 (
.sql
) 体积过大时,常规工具(如 SQL Server Management Studio, VS Code, Notepad++ 等)往往无法打开或执行导入操作。解决方案:利用强大的命令行工具
Sqlcmd
。辅助工具:Navicat(用于数据库创建、连接验证等,非必须)。
一、 创建目标数据库并确认编码
导入前,务必创建目标数据库并设置正确的排序规则(字符编码),确保与脚本文件兼容(常见中文环境使用 Chinese_PRC_CI_AS
对应 GBK)。
-
创建数据库 (指定排序规则):
-- 创建数据库 YourDatabaseName 并设置排序规则为 Chinese_PRC_CI_AS (GBK 编码)CREATE DATABASE YourDatabaseName COLLATE Chinese_PRC_CI_AS;
-
验证数据库排序规则:
-- 查询数据库 YourDatabaseName 的排序规则SELECT name, collation_nameFROM sys.databasesWHERE name = \'YourDatabaseName\';
执行后应看到collation_name
为Chinese_PRC_CI_AS
。
二、 安装 Sqlcmd 命令行工具
Sqlcmd
是微软官方提供的强大命令行工具,专为批量执行 SQL 脚本设计,尤其擅长处理大文件。
-
通过 PowerShell 安装 (推荐使用 winget):
winget install sqlcmd
-
验证安装是否成功:
打开一个新的 PowerShell 或命令提示符窗口,执行:sqlcmd --version
出现版本信息(如SQLCMD v18.x.x
)即表示安装成功。
三、 执行数据库导入
确认目标数据库已按所需编码创建且 Sqlcmd
安装成功后,即可执行导入命令。
-
(可选但推荐) 再次确认目标库编码:
使用 Navicat、SSMS 或再次运行步骤一中的验证 SQL,确保YourDatabaseName
的collation_name
正确。 -
执行导入命令:
sqlcmd -S -U sa -P -d YourDatabaseName -i \"D:\\path\\to\\your\\largefile.sql\" -o \"D:\\path\\to\\log\\output.txt\" -a 32767 -m 1
命令参数详解
-S
-S localhost
, -S 192.168.1.100
, -S .\\SQLEXPRESS
-U
sa
(系统管理员) 或其他高权限账号。-U sa
-P
-U
指定的用户提供 密码。-P StrongPassword123!
-d
-d YourDatabaseName
-i \"\"
-i \"C:\\Data\\backup.sql\"
-o \"\"
-o \"C:\\Logs\\import_log.txt\"
-a
-a 32767
(推荐最大值)-m
-m 1
表示仅输出严重级别 ≥1 的错误。-m 1
(精简输出,减少不必要信息)关键参数说明
-a 32767
: 对于超大 SQL 文件,设置较大的网络数据包大小 (32767
是最大值) 可以显著提高传输和处理效率。-m 1
: 过滤掉低级别的信息性消息,使输出日志 (output.txt
) 更专注于关键错误和警告,便于排查问题。-o
: 强烈建议使用此参数记录输出。导入过程可能耗时较长,日志文件是排查失败原因的唯一依据。- 执行过程:命令运行时间取决于 SQL 文件大小和服务器性能。执行期间请耐心等待,不要中断命令行窗口。完成后检查
output.txt
日志文件确认导入结果。
通过以上步骤,即可绕过图形界面工具的限制,高效可靠地将超大型 .sql
文件导入到您的 SQL Server 数据库中。