[SQLCMD]如何给sql传递参数

最近经常用到超过80M*.sql文件的导入问题。

上网找了一下,发现超过80M的文件是不能在查询分析器中执行的。

 

找了些解决方案,个人感觉最简单的方法就是这个SQLCMD的,拿出来分享一下,也方便日后自己使用。

1  sqlcmd  - SERVERNAME  - USERNAME  - PASSWORD  - filename.sql


下面的内容是详细介绍sqlcmd的,有兴趣的朋友可以看看

 

 

因为公司的业务需要,所以采集了一个2W多条的数据,都是insert语句,生成一个200多M的数据,谁料在通过sql server2005不能直接打开,导入也存在问题,用记事本也打不开,复制贴也不行,最后还是一同学提了个醒用命令在dos下执行.sql文件,才有了办法,同时也在一热心网友的帮助下完成了这个让我头疼半天的活,下面我对这些做一下介绍,应该对有这样需要的朋友很好的帮助。

如果装的是2000版的sql那用的命令是osql,05的用sqlcmd

其实用法很简单,任何技术,一旦说穿就失去了它的神秘,这有点像生活中的很多事,好了废话了半天,还是切入正题,开工吧:

其实就是一句很简单的话句:

sqlcmd -i sqlfile.sql -d databasename -s 127.0.0.1

这个sql文件要放在c:\下

就这么简单..

sqlcmd 使用笔记

登录sqlcmd

命令 sqlcmd -S 服务器名称 -U 帐户 -P 密码

示例 sqlcmd -S "HOMESQLEXPRESS" -U "sa" -P "12345678"

直接执行SQL Script

命令 sqlcmd -S 服务器名称 -U 帐户 -P 密码 -d 数据库 -i SQL Script

示例 sqlcmd -S "HOMESQLEXPRESS" -U "sa" -P "12345678" -d "Database"-i "E:My Documentstest.sql"

查询当前服务器上的数据库

(*) 可能需要 Use Master

1. Select [Name] From sysdatabases

2. sp_helpdb

查询当前数据库的表和存储过程

表:select * from sysobjects where status >=0 andxtype='U'

存储过程:select * from sysobjects where status >=0 andxtype='P'


------------------------
1、你可以用SQLCMD执行交互式动作,如:
C:\sqlcmd>sqlcmd

1> SELECT name from sys.databases

2> GO

你也可以试着键入如下命令,现实服务器列表

1>:ServerList

SERVERS:

WUYZ

1>如果想看其他命令的使用,可以键入:Help /?

2、执行SQL脚本文件

你可以在SQLCMD命令上加入参数I来执行SQL脚本文件,例如:

C:\sqlcmd>sqlcmd -i test.sql

上面的I选项允许你执行一个脚本文件,另外,你也可以指定O选项,把命令的输出导出到指定文件,当然,我们也可以在代码中指定输出结果,如下

C:\sqlcmd>sqlcmd

1> :out output.txt

2> :r test.sql

3、在脚本中使用变量

SQLCMD支持可以在脚本中接收用户传入的变量信息,如下面语句:

SET NOCOUNT ON

Select $(Cols) from $(tablename)

GO

上面语句请求2个参数,我们可以通过指定相应的参数信息传给脚本,如下:

C:\sqlcmd>sqlcmd -i test.sql -o Output.txt -vcols="name,object_id,create_date" tablename="sys.objects"

上面语句的用途是:执行TEST.SQL脚本文件,并把输出的信息输出到OUTPUT.TXT文件中,并分别指定了COLS,TABLENAME的参数值

4、在脚本中设置变量的值
除了通过外部传入参数的值外,还可以在内部设置参数的值,如下面例子

e:\sqlcmd\backuptemplate.sql

use master

backup database [$(db)] to disk='$(file)'

e:\sqlcmd\backupsingle.sql

:setvar db msdb

:setvar file c:\temp\msdb.bak

:r e:\sqlcmd\backuptemplate.sql

如果你想知道当然定义了哪些变量,可以使用:listvar命令来显示。主要命令汇总:

:r filename

:ServerList

:List

:Listvar

:Error filename | STDOUT | STDERR

:Out filename | STDOUT | STDERR

:Perftrace filename | STDOUT | STDERR

:Connect server[\instance] [timeout] [user_name[password] ]

:On Error [exit | ignore]

:SetVar variable value

:Help:XML ON | OFF

主要环境变量汇总:

-a SQLCMDPACKETSIZE

-d SQLCMDDBNAME

-H SQLCMDWORKSTATION

-h SQLCMDHEADERS

-l SQLCMDLOGINTIMEOUT

-m SQLCMDERRORLEVEL

-P SQLCMDPASSWORD

-S SQLCMSSERVER

-s SQLCMDCOLSEP

-t SQLCMDSTATTIMEOUT

-U SQLCMDUSER

-w SQLCMDCOLWIDTH

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值