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.pswp.cn/news/259703.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259703.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259703.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windows下用命令行導出導入MySQL數據庫

方法1&#xff1a;添加“系統環境變量”。我的電腦&#xff1e;屬性&#xff1e;高級&#xff1e;環境變量&#xff0c;在“系統變量”欄目下找到 path 雙擊編輯。先添加&#xff1b;&#xff08;分號&#xff09;&#xff0c;再添加MySQL安裝目錄下bin文件夾&#xff08;包含m…

python模擬鼠標拖動滑塊_如何通過拖動滑塊來控制Kivy滾動視圖?

是的&#xff0c;你可以這樣做&#xff1a;在ScrollView中有一個scroll_類型屬性&#xff0c;因此通過設置它&#xff0c;您可以實現您想要的功能。在如果設置scroll_type[bars]&#xff0c;則可能需要更改bar_width屬性&#xff0c;因為它的默認值為2&#xff0c;而且它太小&a…

怎樣下載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…

網站吞吐量

http://www.blogjava.net/neverend/archive/2011/01/25/343514.html轉載于:https://www.cnblogs.com/sevensole7/archive/2013/06/05/3118966.html

外鏈引入css有哪些方式_HTML+CSS基礎(三) CSS的引入方式和CSS選擇器

一、CSS概念&#xff1a;什么是CSS,CSS說白了就是給頁面添加樣式,讓整個頁面變的好看起來的一種東西,用來定義網頁外觀&#xff0c;如字體、背景、顏色等二、在頁面中使用css的3種常用方式1.行內樣式就是在一個標簽內使用 style 屬性,僅為某一個標簽添加樣式例如文字2.內嵌式就…

混合部署

http://horse87.blog.51cto.com/2633686/1628179轉載于:https://blog.51cto.com/12341672/1893792

Logistic回歸 python實現

Logistic回歸 算法優缺點&#xff1a; 1.計算代價不高&#xff0c;易于理解和實現2.容易欠擬合&#xff0c;分類精度可能不高3.適用數據類型&#xff1a;數值型和標稱型 算法思想&#xff1a; 其實就我的理解來說&#xff0c;logistic回歸實際上就是加了個sigmoid函數的線性回歸…

dataset轉換json格式

轉換json方法 public static string DataToJson(DataSet dt){StringBuilder jsonBuilder new StringBuilder();jsonBuilder.Append("{\"");jsonBuilder.Append("points");jsonBuilder.Append("\":[");for (int i 0; i < dt.Table…

《自控力》總結_完結

《自控力》總結_完結 《自控力》總結_完結 Saturday, December 15, 2012 9:35 PM 《自控力》總結 第一章 1 前額皮質的3個功能區域&#xff1a;“我要”“我不要”“我想要” 2 人的兩個自我&#xff1a;沖動的自己&#xff0c;控制自己。給兩個自己分別起名字&#xff0c;當某…

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;。 扯遠…

Oracle?修改SYS、system用戶密碼

Oracle 修改SYS、system用戶密碼 by:授客 QQ&#xff1a;1033553122 概念 SYS用戶是Oracle中權限最高的用戶&#xff0c;而SYSTEM是一個用于數據庫管理的用戶。在數據庫安裝完之后&#xff0c;應立即修改SYS,SYSTEM這兩個用戶的密碼&#xff0c;以保證數據庫的安全。 安裝完之…

春節小作業總結1

1、x Double.parseDouble(X);字符串轉Double類型&#xff1b; 2、使用正則表達式判斷輸入的是字母還是數字 要import java.util.regex.Pattern 和 java.util.regex.Matcher public boolean isNumeric(String str){ Pattern pattern Pattern.compile("[0-9]*&q…

簡單工廠模式,工廠方法模式,抽象工廠模式,spring的狂想

菜鳥D在項目中遇見一個比較糾結的高耦合&#xff0c;所以就想辦法來解耦。情況是這樣的&#xff1a;系統通過用戶選擇treeview控件的節點判斷調用不同的處理&#xff0c;這些處理中某些東西又是類似的。同事的建議是采用簡單工廠&#xff0c;耦合就耦合吧&#xff0c;反正treev…

堆、棧及靜態數據區詳解 轉

內存分為代碼區、全局數據區、堆區和棧區。堆一般存放動態數據&#xff0c;棧里一般存放局部成員。 關于堆棧和堆的概念[問題] C中創建本地&#xff08;或者說局域&#xff09;變量是在堆棧&#xff08;stack&#xff09;中分配內存地址&#xff0c;而創建全局變量則是在堆&…

如何使用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 等等。容器需要定義一個布…

js變量類型

js中有null和undefined&#xff0c;null是指對象不存在&#xff0c;undefined是指原生數據不存在 var h {name:lisi,age:28};console.log(h.name)//對象用的是點語法&#xff0c;php中是name->lisi 下面是數組&#xff0c;數組用的是【】語法 1 var arr [a,3,hello,true];…

OPENCV MFC 程序出錯修改

error C2146: 語法錯誤 : 缺少“;”(在標識符“PVOID64”的前面) 來源:http://houjixin.blog.163.com/blog/static/356284102009112395049370/ DirectShow 2009-12-23 09:50:49 閱讀311 評論0 字號&#xff1a;大中小打開winnt.h文件&#xff0c;發現問題就是在winnt.h頭文件中…

測試人員報BUG的正確姿勢

每次我提需求的時候&#xff0c;都會和開發一言不合就上BUG。曾經看到一個段子&#xff0c;告訴了我&#xff0c;吵架是不行滴&#xff01;影響心情&#xff0c;正確報bug的姿勢應該是這樣&#xff1a;不要對程序員說&#xff0c;你的代碼有BUG。他的第一反應是&#xff1a;1、…