批量執行sql腳本
使用SQLCMD在SQLServer上執行多個腳本
第一步:先創建一個在C盤下的文件夾:C:\Scripts。然後把腳本存放到這個文件夾中:
腳本1:CREATE_DB.sql
/* SCRIPT: CREATE_DB.sql */
/* 創建TestDB資料庫 */
-- This is the main caller for each script
SET NOCOUNT ON
GO
PRINT '開始創建TestDB資料庫'
IF EXISTS (SELECT 1 FROM SYS.DATABASES WHERE NAME = 'TestDB')
DROP DATABASE TestDB
GO
CREATE DATABASE TestDB
GO
:On Error exit
:r c:\Scripts\CREATE_TABLES.sql
:r c:\Scripts\TABLE_INSERTS.sql
:r c:\Scripts\CREATE_INDEXES.sql
:r c:\Scripts\CREATE_PROCEDURES.sql
PRINT '創建完畢'
GO
2. 阿里雲的資料庫伺服器如何批量執行本地的sql文件
如果資料庫可以遠程連接,直接使用工具連接就可以導入了如果不支持,有兩種情況:一般虛擬機上都會提供資料庫管理的工具,使用工具就可以。如果不提供,可以在JSP頁面中使用JDBC,連接好資料庫以後,可以使用FileInputStream將文件讀取到內存中,然後在連接好的資料庫執行讀取的語句就可以了
3. 請教高手:DB2 SQL腳本批量執行如何保存日誌問題
可以在命令編輯器或者Windows 的DB2 命令窗口或者 linux 的shell 中執行SQL 腳本。在windows 的DB2 命令窗口或者 linux 的shell 中執行SQL語句,可以使用下面的命令執行script1.sql腳本:
db2 -t -v -f script1.sql -z script1.log
或者:
db2 –tvf script1.sql –z script1.log
在上面的命令中,
-t 表示語句使用默認的語句終結符——分號;
-v 表示使用冗長模式,這樣 DB2 會顯示每一條正在執行命令的信息;
-f 表示其後就是腳本文件;
-z 表示其後的信息記錄文件用於記錄屏幕的輸出,方便以後的分析(這是可選的,但我們建議使用該選項)。
當使用了-t選項而沒有標明語句終結符,則分號(;)會默認為語句的終結符。有時可能會出現使用另外的終結符的情況,例如用SQL PL 編寫的的腳本使用其它的符號而不是默認的分號,因為分號在SQL PL 是用於定義資料庫對象過程中的語句結束。
4. 用批處理執行SQL文件的腳本應該怎麼寫
步驟:(1) 創建一個批處理文件:打開記事本,創建資料庫連接信息(例如,server name,username,password,databasename等)以及要執行的*.sql腳本名稱。具體語法參考下文"osql 實用工具" 。 將文件的擴展名改為.bat 並保存。
示例1:指定待執行sql 文件的相對路徑
osql -S admin\admin -U sa -P sa -d TestDB -i c:\test.sql
pause
示例2: 待執行文件與bat文件在同一個目錄,指定相對路徑
set localdir=%~dp0
osql -S (local) -U sa -P sa -d Test -i %localdir%\test1.sql
osql -S (local) -U sa -P sa -d Test -i %localdir%\test2.sql
osql -S (local) -U sa -P sa -d Test -i %localdir%\test3.sql
pause
(2) 創建需要執行的sql 腳本, test.sql,test2.sql 和test3.sql, 並放在步驟(1)示例1中指定的位置。本例為c:\ 根目錄。如果用示例2,將待執行的sql和bat文件放在同一個目錄下。
(3) 雙擊*.bat 文件並查看運行結果。
5. 如何批量執行某個文件夾下所有的 sql腳本
1,先把sql腳本名字全部取出來
2,追加到一個文本文件里名字 yy.sql,比如 xx1.sql 就寫
@@xx1.sql
@@xx2.sql
3,在文件目錄下新建一個bat文件內容如下
sqlplus user/pwd@sid @yy.sql >tt.log
4,雙擊bat文件運行,就可以批量執行
注意,每個sql腳本文件裡面的最後一行必須有 /
6. 如何批量執行sql查找替換
在Linux裡面,有一個比較好的工具sed,sed -i "s#A#B#g" filename,比如:sed -i "s#linux#windows#g" a.txt,這樣可以把a.txt文件中所有的linux替換成windows,「#」可以換成其他的字元,可以根據實際情況來定。如果替換的內容來自文件,可以用腳本遍歷文件的方式實現。例如:
舊地址文件:A.txt,需要處理的sql文件:mysql.sql,替換後的新內容:newtext
#/bin/bash
for line in `cat .A.txt`;
do
sed -i "s#$line#newtext#g" mysql.sql
done
當然,也可以指定替換行的范圍(例如50行到100行),具體的請參考linux下sed命令的用法
7. ADOCommand怎樣批量執行sql語句,該怎麼解決
因為SQL腳本中的Go是單獨成行的,所以比較好判斷,另外腳本中最好不要含有注釋語句,如果注釋過長的話會換行,這樣要多判斷一次。
另外SQL腳本要是Ansi格式,不要生成Unicode的,否則不能正確運行。
C/C++code
void__fastcallTForm1::Button1Click(TObject*Sender)
{
TStringList*SQL=newTStringList;
SQL->LoadFromFile(ExtractFilePath(Application->ExeName)+
"SQLScript");
ADOCommand1->CommandText="";
for(inti=0;i<SQL->Count;i++)
{
//遇到GO語句,執行
if(SQL->Strings[i]=="GO")
ADOCommand1->Execute();
else
//清除注釋
if(SQL->Strings[i].SubString(0,2)=="/*"||
SQL->Strings[i].SubString(SQL->Strings[i].Length()-2,2)=="*/")
{
}
else
//不是GO,不是注釋,不為空,則是SQL的執行語句
if(SQL->Strings[i].Trim()!=""&&
SQL->Strings[i].Trim()!="")
ADOCommand1->CommandText+=
SQL->Strings[i]+"";
}
}
8. sql弄成一次性執行通過腳本
1、把一個個的sql語句都寫在存儲過程裡面。
2、把一個個的sql語句都寫在txt文件裡面,然後運行就可以了。
9. 我有一堆sql文件需要運行 如何批量運行
可以使用批處理,調用 isql 執行 .sql文件。
1、 新建test.sql 文件。如圖,代碼執行刪除 表a中id='1'的記錄。
3、運行批處理test.bat即可執行,test.sql中的SQL語句。