如何执行超过一百兆(100MB)的sql脚本?
最近遇到一個問題,在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。
2、使用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文件中,需要的時候替換一些參數,點擊文件執行即可!是不是比自己去寫一個程序方便多呢???
?
原文出處:https://www.cnblogs.com/hai-ping/p/3939150.html
轉載于:https://www.cnblogs.com/sucretan2010/p/10835211.html
總結
以上是生活随笔為你收集整理的如何执行超过一百兆(100MB)的sql脚本?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: osi七层模型tcp/udp
- 下一篇: vue数组改变检测