当前位置: 首页 > news >正文

使用 Sqlcmd 高效导入大型 SQL Server 数据库脚本 (.sql)

使用 Sqlcmd 高效导入大型 SQL Server 数据库脚本 (.sql)

核心痛点:当 SQL Server 的数据库备份脚本文件 (.sql) 体积过大时,常规工具(如 SQL Server Management Studio, VS Code, Notepad++ 等)往往无法打开或执行导入操作。

解决方案:利用强大的命令行工具 Sqlcmd

辅助工具:Navicat(用于数据库创建、连接验证等,非必须)。

一、 创建目标数据库并确认编码

导入前,务必创建目标数据库并设置正确的排序规则(字符编码),确保与脚本文件兼容(常见中文环境使用 Chinese_PRC_CI_AS 对应 GBK)。

  1. 创建数据库 (指定排序规则):

    -- 创建数据库 YourDatabaseName 并设置排序规则为 Chinese_PRC_CI_AS (GBK 编码)
    CREATE DATABASE YourDatabaseName COLLATE Chinese_PRC_CI_AS;
    
  2. 验证数据库排序规则:

    -- 查询数据库 YourDatabaseName 的排序规则
    SELECT name, collation_name
    FROM sys.databases
    WHERE name = 'YourDatabaseName';
    

    确认数据库排序规则
    执行后应看到 collation_nameChinese_PRC_CI_AS

二、 安装 Sqlcmd 命令行工具

Sqlcmd 是微软官方提供的强大命令行工具,专为批量执行 SQL 脚本设计,尤其擅长处理大文件。

  1. 通过 PowerShell 安装 (推荐使用 winget):

    winget install sqlcmd
    

    安装 Sqlcmd

  2. 验证安装是否成功:
    打开一个新的 PowerShell 或命令提示符窗口,执行:

    sqlcmd --version
    

    检查 Sqlcmd 版本
    出现版本信息(如 SQLCMD v18.x.x)即表示安装成功。

三、 执行数据库导入

确认目标数据库已按所需编码创建且 Sqlcmd 安装成功后,即可执行导入命令。

  1. (可选但推荐) 再次确认目标库编码:
    使用 Navicat、SSMS 或再次运行步骤一中的验证 SQL,确保 YourDatabaseNamecollation_name 正确。

  2. 执行导入命令:

    sqlcmd -S <server_name_or_ip> -U sa -P <your_password> -d YourDatabaseName -i "D:\path\to\your\largefile.sql" -o "D:\path\to\log\output.txt" -a 32767 -m 1
    

命令参数详解

参数作用说明示例/备注
-S <server_name_or_ip>指定 SQL Server 实例的 服务器名称或 IP 地址-S localhost, -S 192.168.1.100, -S .\SQLEXPRESS
-U <username>指定连接使用的 用户名。通常使用 sa (系统管理员) 或其他高权限账号。-U sa
-P <password>-U 指定的用户提供 密码-P StrongPassword123!
-d <database_name>指定连接后要操作的 目标数据库名称。脚本将导入此库。-d YourDatabaseName
-i "<input_file_path>"指定包含 SQL 语句的 输入脚本文件 (.sql) 的完整路径-i "C:\Data\backup.sql"
-o "<output_file_path>"指定将 命令执行结果(输出消息和错误)重定向到的日志文件-o "C:\Logs\import_log.txt"
-a <packet_size>设置 网络数据包大小(字节)。增大此值有助于提升大脚本传输效率。-a 32767 (推荐最大值)
-m <error_level>控制 错误消息的显示级别-m 1 表示仅输出严重级别 ≥1 的错误。-m 1 (精简输出,减少不必要信息)

关键参数说明

  • -a 32767: 对于超大 SQL 文件,设置较大的网络数据包大小 (32767 是最大值) 可以显著提高传输和处理效率。
  • -m 1: 过滤掉低级别的信息性消息,使输出日志 (output.txt) 更专注于关键错误和警告,便于排查问题。
  • -o: 强烈建议使用此参数记录输出。导入过程可能耗时较长,日志文件是排查失败原因的唯一依据。
  • 执行过程:命令运行时间取决于 SQL 文件大小和服务器性能。执行期间请耐心等待,不要中断命令行窗口。完成后检查 output.txt 日志文件确认导入结果。

通过以上步骤,即可绕过图形界面工具的限制,高效可靠地将超大型 .sql 文件导入到您的 SQL Server 数据库中。

http://www.dtcms.com/a/262935.html

相关文章:

  • 深入理解 B+ 树:数据库索引的脊梁
  • AI初学者如何对大模型进行微调?——零基础保姆级实战指南
  • vscode一个文件夹有残余的git仓库文件,已经失效了,怎样进行清空仓库残余文件并重新初始化git--ubuntu
  • 【stm32】HAL库开发——CubeMX配置RTC,单片机工作模式和看门狗
  • 炸鸡派-基础测试例程
  • Linux入门篇学习——Ubuntu 系统介绍和Ubuntu启用root用户
  • 在线五子棋对战项目
  • 1.1_2 计算机网络的组成和功能
  • python+uniapp基于微信小程序的食堂菜品查询系统
  • Deepoc 大模型:无人机行业的智能变革引擎
  • vue-33(实践练习:使用 Nuxt.js 和 SSR 构建一个简单的博客)
  • SpringCloud Gateway
  • C++ 第四阶段 STL 容器 - 第五讲:详解 std::set 与 std::unordered_set
  • 蓝牙耳机开发--探讨AI蓝牙耳机功能、瓶颈及未来展望
  • 链表题解——两两交换链表中的节点【LeetCode】
  • AWS 开源 Strands Agents SDK,简化 AI 代理开发流程
  • Objective-c把字符解析成字典
  • 【微服务】.Net中使用Consul实现服务高可用
  • 链表重排序问题
  • java JNDI高版本绕过 工具介绍 自动化bypass
  • Python训练营打卡Day58(2025.6.30)
  • 晨控CK-FR03与和利时LX系列PLC配置EtherNetIP通讯连接操作手册
  • linux下fabric环境搭建
  • [免费]微信小程序停车场预约管理系统(Springboot后端+Vue3管理端)【论文+源码+SQL脚本】
  • Spring Security 鉴权与授权详解(前后端分离项目)
  • 系统自带激活管理脚本 ospp.vbs 文件
  • Python 的内置函数 object
  • Spring Boot属性配置方式
  • Linux 系统管理:自动化运维与容器化部署
  • 淘宝API接口在数据分析中的应用