欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sqlcmd命令执行大的SQL脚本

程序员文章站 2024-03-16 13:34:16
...

前言

这两天从服务器导出一个150多MB的脚本文件,导入到我本地的SQLServer数据库中时,直接打开执行提示内存不足的错误,于是google搜索发现微软针对此类情况有不少命令行工具,其中有一款sqlcmd 实用工具,官方文档地址为:sqlcmd 实用工具
sqlcmd 实用工具是一个命令行实用工具,用于 Transact-SQL 语句和脚本的临时、交互执行以及自动执行 Transact-SQL 脚本撰写任务。 若要以交互方式使用 sqlcmd ,或要生成可使用 sqlcmd运行的脚本文件,用户需要了解 Transact-SQL。 通常以下列方式使用 sqlcmd 实用工具

  • 用户输入 Transact-SQL 语句,输入方式与在命令提示符下输入的方式类似。 结果将显示在命令提示符处。 若要打开命令提示符窗口,请在 Windows 搜索中输入“cmd”,然后单击“命令提示符”将其打开 。 在命令提示符处,键入 sqlcmd ,后面跟随所需的选项列表。 有关 sqlcmd支持的选项的完整列表,请参阅 sqlcmd 实用工具
  • 用户通过下列方式提交 sqlcmd 作业:指定要执行的单个 Transact-SQL 语句,或将实用工具指向要执行的 Transact-SQL 语句所在的文本文件。 输出通常定向到一个文本文件,但也可能在命令提示符处显示。
  • 查询编辑器中的 SQLCMD 模式 SQL Server Management Studio 。
  • SQL Server 管理对象 (SMO)
  • SQL Server 代理 CmdExec 作业。

常用 sqlcmd 选项

  • 服务器选项 (-S ),用于标识 sqlcmd 连接到的 Microsoft SQL Server 的实例。
  • 身份验证选项(-E、-U 和 -P),用于指定 sqlcmd 连接到 SQL Server 实例所使用的凭据 。 注意: -E 选项为默认选项,无需指定。
  • 输入选项(-Q、-q 和 -i),用于标识 sqlcmd 输入的位置 。
  • 输出选项 (-o),用于指定 sqlcmd 输出所在的文件 。

sqlcmd语法

sqlcmd   
 -a packet_size  
 -A (dedicated administrator connection)  
 -b (terminate batch job if there is an error)  
 -c batch_terminator  
 -C (trust the server certificate)  
 -d db_name  
 -e (echo input)  
 -E (use trusted connection)  
 -f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage] 
 -g (enable column encryption) 
 -G (use Azure Active Directory for authentication)
 -h rows_per_header  
 -H workstation_name  
 -i input_file  
 -I (enable quoted identifiers)  
 -j (Print raw error messages)
 -k[1 | 2] (remove or replace control characters)  
 -K application_intent  
 -l login_timeout  
 -L[c] (list servers, optional clean output)  
 -m error_level  
 -M multisubnet_failover  
 -N (encrypt connection)  
 -o output_file  
 -p[1] (print statistics, optional colon format)  
 -P password  
 -q "cmdline query"  
 -Q "cmdline query" (and exit)  
 -r[0 | 1] (msgs to stderr)  
 -R (use client regional settings)  
 -s col_separator  
 -S [protocol:]server[instance_name][,port]  
 -t query_timeout  
 -u (unicode output file)  
 -U login_id  
 -v var = "value"  
 -V error_severity_level  
 -w column_width  
 -W (remove trailing spaces)  
 -x (disable variable substitution)  
 -X[1] (disable commands, startup script, environment variables, optional exit)  
 -y variable_length_type_display_width  
 -Y fixed_length_type_display_width  
 -z new_password   
 -Z new_password (and exit)  
 -? (usage)

使用sqlcmd命令执行大的脚本文件

假如我有一个input.sql的脚本,超过100多MB,本地SQLServer服务器地址为localhost,账号为sa,密码为123456,数据库名称为testDB,需要将脚本导入到testDB中,打开终端,进入到input.sql脚本所在目录(比如说D:/test),执行如下命令:

sqlcmd -S localhost -U sa -P 123456 -d testDB -i input.sql

具体的参数描述可以参考官网:sqlcmd - 使用实用工具
当然在命令行中直接使用sqlcmd -?也可以查看相关参数的用法,如下图所示:
sqlcmd命令执行大的SQL脚本

相关标签: 软件使用