如何執行超過一百兆(100MB)的sql指令碼?

來源:互聯網
上載者:User

標籤:style   blog   http   color   os   使用   io   檔案   資料   

    最近遇到一個問題,在sqlserver的查詢分析器裡面執行一個超過100MB的資料庫指令碼,發現老是報“引發類型為“System.OutOfMemoryException”的異常”,上網查了一下,主要是因為.sql的指令檔過大(一般都超過100M)造成記憶體無法處理這麼多的資料。

    解決辦法有各種各樣,例如:

    1、用記事本開啟指令檔,把檔案依次剪下成10-15M左右的文字檔,然後再一個個執行;

    2、或者在指令碼匯出時,分表匯出,這樣匯出的文本size也不會很大;

    以上問題雖然簡便,但是步驟繁多,要是表和資料太多,著實是一種勞力折磨!另外如果表之間是有主外鍵關係的,分資料得小心謹慎,否則報錯讓你抓狂!

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

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

什麼是 Osql?

osql 是一個 Microsoft Windows 32 命令提示字元工具,您可以使用它運行 Transact-SQL 陳述式和指令檔!

如何使用 Osql?

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

 注意:在中我們可以看到osql 並不支援 SQL Server 2012的所有功能,如果需要使用SQL Server 2012的所有功能可以使用ocmd命令。

 1、使用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。

1、使用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 是輸出檔案及其完整路徑。

總結

    如果你覺得太麻煩了,可以使用批處理,將常用的一些命令寫在bat檔案中,需要的時候替換一些參數,點擊檔案執行即可!是不是比自己去寫一個程式方便多呢???

如何執行超過一百兆(100MB)的sql指令碼?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.