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

2022-06-14 11:39:07 字數 3223 閱讀 8268

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

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

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

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

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

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

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

osql 是乙個 microsoft windows 32 命令提示符工具,您可以使用它執行 transact-sql 語句和指令碼檔案!

在開始->執行 中鍵入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檔案中,需要的時候替換一些引數,點選檔案執行即可!是不是比自己去寫乙個程式方便多呢???

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

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

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

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

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

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

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

osql 是乙個 microsoft windows 32 命令提示符工具,您可以使用它執行 transact-sql 語句和指令碼檔案!

在開始->執行 中鍵入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檔案中,需要的時候替換一些引數,點選檔案執行即可!是不是比自己去寫乙個程式方便多呢???

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

原文 最近遇到乙個問題,在sqlserver的查詢分析器裡面執行乙個超過100mb的資料庫指令碼,發現老是報 引發型別為 system.outofmemoryexception 的異常 上網查了一下,主要是因為.sql的指令碼檔案過大 一般都超過100m 造成記憶體無法處理這麼多的資料。解決辦法有各...

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

最近遇到乙個問題,在sqlserver的查詢分析器裡面執行乙個超過100mb的資料庫指令碼,發現老是報 引發型別為 system.outofmemoryexception 的異常 上網查了一下,主要是因為.sql的指令碼檔案過大 一般都超過100m 造成記憶體無法處理這麼多的資料。解決辦法有各種各樣...

git 提交大小超過100M

github 會在你上傳檔案大於50m的時候,給予警告 大於100m的時候給出 server reject 拒絕上傳 git filter branch f index filter git rm rf cached ignore unmatch foldername all1.維持單個檔案在100...