SQLCMD的介绍

SQLCMD的介绍
原文:SQLCMD的介绍

文章转载自:http://blog.sina.com.cn/s/blog_3eec0ced0100mhm2.html

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

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

 

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

1 sqlcmd -S SERVERNAME -U USERNAME -P PASSWORD -i filename.sql


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

 

 

因为公司的业务需要,所以采集了一个2W多条的数据,都是insert语句,生成一个200多M的数据,谁料在通过sql server 2005不能直接打开,导入也存在问题,用记事本也打不开,复制贴也不行,最后还是一同学提了个醒用命令在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 and xtype='U'

存储过程:select * from sysobjects where status >=0 and xtype='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 -v cols="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

------------------------
T-SQL还原数据库备份
restore database TionkDatabase from disk='E:\@工作\讯客\项目\讯客直销\代码\db20080521'
width move "源文件" to "目标文件位置"

------------------------
使用 T-SQL 执行还原

RESTORE 命令有两种形式显示如下:
RESTORE DATABASE 还原完整的资料库、档案或档案群组。
RESTORE LOG 还原交易记录档。

RESTORE 陈述式

执行完整资料库还原时 RESTORE 陈述式的语法如下:
RESTORE DATABASE database_name
[ FROM backup_device ]
[ WITH options ]
这个陈述式只要求资料库的档案名称和备份所在的位置。

执行档案和档案群组还原时陈述式的语法如下:
RESTORE DATABASE database_name
[ FILE = file_name ]
[ FILEGROUP = filegroup_name ]
[ FROM backup_device ]
[ WITH options ]
这个陈述式只要求资料库名称、档案名称或档案群组名称和备份所在的位置。

执行交易记录还原时陈述式的语法如下:
RESTORE LOG database_name
[ FROM backup_device ]
[ WITH options ]
就如同其他的命令,database_name 是还原将要执行的资料库名称。backup_device 参数可以是逻辑备份装置名称或实体装置的名称。如果要指定一个实体装置,必须限定它的装置类型-也就是说,装置名称前面必须加上 DISK=、TAPE= 或 PIPE=。可以指定一个或多个装置,中间以逗号隔开。

如果没有提供 FORM 子句,还原将无法进行,而且仍然会执行回复(除非执行NORECOVERY 选项)。这项技术可以用来将资料库设定为回复模式,而不还原其他附加资料。例如,可以执行多个差异还原操作,然后执行 RESTORE 陈述式,不需要 FORM 子句来将资料库设定为回复模式,就能够启动回复过程。

选项

选项                        说明
RESTRICTED_USER             设定新还原资料库的安全性,只有 db_owner、dbcreater 和 sysadmin 角色成员才能存取该资料库。
FILE = file_number          如果在储存媒体中有多个备份集,可用来识别所使用的备份集。例如设定该数值为2,则使用磁带上的第二个备份集。
PASSWORD = password         指定储存备份的密码。
MEDIANAME =media_name       指定媒体的名称。
MEDIAPASSWORD = password    指定储存媒体的密码。
MOVE 'logical_file_name' TO 'OS_file_name'
更改还原档案的位置,例如:MOVE 'Northwind' TO 'D:\data\Northwind.mdf'。如果旧的磁碟无法使用,而需要还原到新的磁碟上时,可以使用这个选项。

NORECOVERY |RECOVERY | STANDBY = undo_file
NORECOVERY 指定在还原后,交易将无法退回或重新进行。如果将还原其他的备份(差异式备份或交易记录档备份),则需要用到这个选项。REVOVERY 为预设选项,它指定执行回复操作,并退回每个没有提交的变更。STANDBY 指定在还原需要还原情况下,建立还原(undo)档案。
KEEP_REPLICATION 指定当资料库还原时复制设定要保存下来。
NOUNLOAD | UNLOAD NOUNLOAD 指定在还原完成后不卸载储存媒体(例如,覆写备份磁带并弹出)。UNLOAD 为预设选项,指定在还原完成后卸载储存媒体。
REPLACE 指出即使资料档案已经存在,SQL Server 仍将还原这些档案。现存的档案将被删除和覆写。如果没有指定 REPLACE,那麼 SQL Server 将会核对 database_name 是否已经存在。如果已经存在,那麼将终止还原操作。这个安全特性帮助避免无意地将还原覆写正在工作的资料库。
RESTART 指定 SQL Server 在还原操作被中断后重新启动还原操作。
STATS [ = percentage ] 在还原操作完成了指定的百分率后显示讯息。如果需要监控操作的过程,这个选项将会很有用。
PARTIAL 指定执行部份还原。
STOPAT = date_time

(log restore only) www.koogoogle.cn/whois
指定资料库回复到 data_time 指定时刻的资料状态(只对记录档还原有效)。
STOPATMARK = 'mark' 指定还原操作进行到标记处。
STOPBEFOREMARK = 'mark' 指定还原操作进行到标记之前。

 

通过OSQL命令执行SQL SERVER批SQL

通过System.Data.SqlClient命名空间只能执行单条SQL,或多个内容中间用;分开,不能执行类似等命令,有没有一种方法能类似查询分析器一样执行一些批命令呢,答案是通过OSQL来执行。
OSQL详细用法:http://technet.microsoft.com/zh-cn/library/ms162806.aspx
通地进程来调用:

 

SQLCMD的介绍C#代码
 1         /// <summary>
 2         /// 执行OSQL命令
 3         /// </summary>
 4         public static  void ExcuteOsqlCmd(string cmd, string errorFile, string filePath)
 5         {
 6              System.Diagnostics.Process p = new System.Diagnostics.Process();
 7 
 8              p.StartInfo.FileName = "osql";
 9              p.StartInfo.Arguments = cmd;
10              p.StartInfo.UseShellExecute = false;
11 
12              p.StartInfo.RedirectStandardError = true;
13              p.StartInfo.CreateNoWindow=true;
14              p.Start();
15              p.WaitForExit();
16             //p.Close();
17             int exitCode = p.ExitCode;
18             if (exitCode != 0)
19             {
20                  StreamReader sr = new StreamReader(errorFile, System.Text.Encoding.Default);
21                 string all = sr.ReadToEnd();
22                  sr.Close();
23                 //ExcuteOtherCmd(string.Format("notepad \"{0}\"", errorFile));
24                 throw new StepException(all);
25              }
26          }


 调用如下:
string comm = string.Format(" -U {5} -P {0} -S {1} -d {2} -b -e -i \"{3}\" -o \"{4}\"", pass,
                                         conn.DataSource,
                                         conn.Database,
                                         FilePath, errorFile,user);
Process.ExcuteOsqlCmd(comm, errorFile, FilePath);//直接执行一个SQL文件,路径为FilePath

posted on 2014-11-22 12:22 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/4115010.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样下载C/C++的免费、开源且跨平台IDE——Code::Blocks

进入Code::Blocks的官网&#xff0c;官网地址为&#xff1a;http://www.codeblocks.org/home。进入后如下图所示&#xff1a; 点击“Home”菜单&#xff0c;跳转到IDE的下载界面&#xff1a; 有几种模式可供选择&#xff0c;我选择的第一种&#xff0c;Download the binary rel…

Logistic回归 python实现

Logistic回归 算法优缺点&#xff1a; 1.计算代价不高&#xff0c;易于理解和实现2.容易欠拟合&#xff0c;分类精度可能不高3.适用数据类型&#xff1a;数值型和标称型 算法思想&#xff1a; 其实就我的理解来说&#xff0c;logistic回归实际上就是加了个sigmoid函数的线性回归…

python 定时自动爬取_python实现scrapy爬虫每天定时抓取数据的示例代码

1. 前言。1.1. 需求背景。每天抓取的是同一份商品的数据&#xff0c;用来做趋势分析。要求每天都需要抓一份&#xff0c;也仅限抓取一份数据。但是整个爬取数据的过程在时间上并不确定&#xff0c;受本地网络&#xff0c;代理速度&#xff0c;抓取数据量有关&#xff0c;一般情…

博客园win8客户端开发记录5-app设置 登录 回复评论

这段时间完成了博客园cnblogs登录&#xff0c;注销和设置的相关功能 &#xff0c;进入软件&#xff0c; 打开win8的charm setting 选择设置就是当前软件的设置选项了&#xff0c; 感觉这有点山寨mac os x系统&#xff08;所有软件包括当前系统使用统一的设置&#xff09;。 扯远…

简单工厂模式,工厂方法模式,抽象工厂模式,spring的狂想

菜鸟D在项目中遇见一个比较纠结的高耦合&#xff0c;所以就想办法来解耦。情况是这样的&#xff1a;系统通过用户选择treeview控件的节点判断调用不同的处理&#xff0c;这些处理中某些东西又是类似的。同事的建议是采用简单工厂&#xff0c;耦合就耦合吧&#xff0c;反正treev…

如何使用CSS实现居中

前言&#xff1a; 这一篇主要是翻译 《how-to-center-anything-with-css》这一篇文章的主要内容&#xff0c;再加上自己的一些概括理解&#xff1b;主要问题是解决垂直居中的问题。我们知道实现水平居中的方式很多种&#xff0c;比如&#xff1a; text-align:center; margin:0 …

java布局_运用 BoxLayout 进行 Swing 控件布局

引言在用户使用 Java Swing 进行用户界面开发过程中&#xff0c;会碰到如何对 Java Swing 的控件进行布局的问题。Swing 的控件放置在容器 (Container) 中&#xff0c;容器就是能够容纳控件或者其它容器的类&#xff0c;容器的具体例子有 Frame、Panel 等等。容器需要定义一个布…

java链表实现_链表的原理及java实现

一&#xff1a;单向链表基本介绍链表是一种数据结构&#xff0c;和数组同级。比如&#xff0c;Java中我们使用的ArrayList&#xff0c;其实现原理是数组。而LinkedList的实现原理就是链表了。链表在进行循环遍历时效率不高&#xff0c;但是插入和删除时优势明显。下面对单向链表…

xss challenge 解题思路(1-3)

challenge1: 用很基本的方法即可&#xff0c;截图如下&#xff1a; 提交后成功弹窗&#xff0c;完成。 challenge2 这次我们发现我们输入的内容被放入value”“ 中&#xff0c;所以需要将前面的结构闭合&#xff0c;构造如下&#xff1a; "><script>alert(docume…

宾得准饼干广角镜头DA15

DA15的挂机效果图&#xff0c;感觉还是超级的小&#xff0c;是最小的广角镜头了&#xff1a; 主要特点1. 超广视角当安装在宾得数码单反相机上时&#xff0c;这款全新的镜头提供相当于35mm胶片规格的约23mm画面视角&#xff0c;可使拍摄者拍摄出独特的诱人影像和超广角镜头独有…

java slf4j_SLF4J 使用手册

原文链接 译者&#xff1a;zivyuJava的简单日志门面( Simple Logging Facade for Java SLF4J)作为一个简单的门面或抽象&#xff0c;用来服务于各种各样的日志框架&#xff0c;比如java.util.logging、logback和log4j。SLF4J允许最终用户在部署时集成自己想要的日志框架。需要…

[译]Java 垃圾回收介绍

说明&#xff1a;这篇文章来翻译来自于Javapapers 的Java Garbage Collection Introduction 在Java中&#xff0c;对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的。和C语言不一样的是&#xff0c;开发中不需要在Java中写垃圾回收代码。这也是使Java更加流行而且帮…

打印三角形

直角三角形 #include<iostream> using namespace std; int main() { int i,j; for(i1;i<10;i) {for(j1;j<i;j) cout<<"*"; cout<<endl; } } ———————————————————————————…

Linux基础入门学习笔记之二

第三节 用户及文件权限管理 Linux用户管理 Linux是可以实现多用户登录的操作系统 查看用户who命令用于查看用户 shiyanlou是当前登录用户的用户名 pts/0中pts表示伪终端&#xff0c;后面的数字表示伪终端的序号。 后面是当前伪终端启动时间 创建用户创建用户需要root权限&#…

这几天有django和python做了一个多用户博客系统(可选择模板) 没完成,先分享下...

这个TBlog已经全新改版了&#xff0c;更名为UUBlog 新版地址&#xff1a; 用Python和Django实现多用户博客系统——UUBlog 断断续续2周时间吧&#xff0c;用django做了一个多用户博客系统&#xff0c;现在还没有做完&#xff0c;做分享下,以后等完善了再慢慢说 做的时候房展了博…

MySQL数据高级查询之连接查询、联合查询、子查询

2019独角兽企业重金招聘Python工程师标准>>> 一、连接查询 连接查询: 将多张表(>2)进行记录的连接(按照某个指定的条件进行数据拼接)。 连接查询的意义: 在用户查看数据的时候,需要显示的数据来自多张表. 连接查询: join, 使用方式: 左表 join 右表&#xff1b;左…

Oracle11g解锁报错SP2-0306-选项无效

普通用户登录isqlplus: (一)在浏览器中输入URL &#xff08;http://localhost:5560/isqlplus&#xff09;。显示登录界面 这里只能用普通用户进行登录&#xff0c;因为要用sys登录&#xff0c;必须用sys的DBA身份登录。所以用普通用户SCOTT&#xff0c;但是还未解锁 问题:SP2-0…

Chrome浏览器无法观看视频,一直提示“adobe flash player 已过期” ?

很多新用户在安装了Chrome浏览器或者更新过的的时候&#xff0c;经常提示“ adobe flash player 已过期”的问题&#xff0c;反复提示&#xff0c;导致无法观看视频。于是从网上也找了很多办法都没有解决。这里给大家提供一个最完美的解决方案。经亲自测试&#xff0c;完美解决…

关于JVM的垃圾回收GC的一些记录

目录 一、JVM内存区域划分 二、从一个基本问题开始引入垃圾回收 三、GC作用的区域 三、如何确定一个对象是否可以被当成垃圾进行回收 &#xff08;1&#xff09;引用计数法 &#xff08;2&#xff09;可达性分析算法 &#xff08;3&#xff09;引用的类型 &#xff08;3…

codevs1219 骑士遍历(棋盘DP)

题目描述 Description设有一个n*m的棋盘&#xff08;2≤n≤50&#xff0c;2≤m≤50&#xff09;&#xff0c;如下图&#xff0c;在棋盘上有一个中国象棋马。 规定&#xff1a; 1)马只能走日字 2)马只能向右跳 问给定起点x1,y1和终点x2,y2&#xff0c;求出马从x1,y1出发到x2,y2的…