如何執行超過一百兆(100MB)的sql腳本?

原文:http://www.cnblogs.com/hai-ping/p/3939150.htmlhtml

 

最近遇到一個問題,在sqlserver的查詢分析器裏面執行一個超過100MB的數據庫腳本,發現總是報「引起類型爲「System.OutOfMemoryException」的異常」,上網查了一下,主要是由於.sql的腳本文件過大(通常都超過100M)形成內存沒法處理這麼多的數據。 sql

解決辦法有各類各樣,例如: 數據庫

    一、用記事本打開腳本文件,把文件依次剪切成10-15M左右的文本文件,而後再一個個執行; 工具

    二、或者在腳本導出時,分表導出,這樣導出的文本size也不會很大; sqlserver

    以上問題雖然簡便,可是步驟繁多,要是表和數據太多,着實是一種勞力折磨!另外若是表之間是有主外鍵關係的,分數據得當心謹慎,不然報錯讓你抓狂! 命令行

    好!說了這麼多,到底有什麼解決方案了呢! server

    解決方案就是使用cmd下的osql命令,腳本大不是問題,關鍵是你得有耐心,執行大腳本,是須要必定的時間的!實際上也是! htm

什麼是 Osql?

osql 是一個 Microsoft Windows 32 命令提示符工具,您可使用它運行 Transact-SQL 語句和腳本文件! blog

如何使用 Osql?

在開始->運行 中鍵入cmd,使用 "OSQL -?"命令,就能夠顯示osql命令行的幫助。
注意:osql 工具的選項列表是區分大小的,在使用時注意。 內存

注意:在上圖中咱們能夠看到osql 並不支持 SQL Server 2012的全部功能,若是須要使用SQL Server 2012的全部功能可使用ocmd命令。

一、使用osql執行單個 Transact-SQL 語句

在鍵入cmd與下面這一個相似的命令:

    osql -E -q "Transact-SQL statement"  

    例如:sql -E -q "use myDB select * from myTable"

    其中 -E 表示使用 Microsoft Windows NT 身份驗證。

    也可使用sa帳戶,具體能夠看看上面的命令!

    而-q 表示運行 Transact-SQL 語句,可是在查詢結束時不退出 osql。

    如要運行 Transact-SQL 語句並退出 osql,請使用 -Q 參數來代替 -q。

一、使用osql執行一個大腳本文件

  將該工具指向一個腳本文件,步驟:

    a.建立一個包含一批 Transact-SQL 語句的腳本文件(如 myfile.sql)。

    b.打開命令提示符,鍵入與下面相似的一個命令,而後按 ENTER 鍵:

    osql -E -i input_file

    其中input_file 是腳本文件及其完整路徑。例如,若是腳本文件 myfile.sql 在 C:\users文件夾中,

    請將參數 myfile 替換爲 C:\users\myfile.sql。

    該腳本文件的運行結果將出如今控制檯窗口中。

    若是您想將運行結果定向到一個文件,請向上述命令中添加 -o output_file 參數。例如:

    osql -E -i input_file -o output_file

    其中output_file 是輸出文件及其完整路徑。

相關文章
相關標籤/搜索