當前位置:首頁 » 編程語言 » bat批量執行sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

bat批量執行sql

發布時間: 2023-04-26 20:39:27

sql server自動生成批量執行SQL腳本的批處理

場景:

DBA那邊給我導出了所有的存儲 函數等等對象的創建腳本 有上千個文件

現在需要將這些對象創建腳本導入到另外一個庫 如何解決呢?

手動一個個執行顯然不太現實

於是手動寫了一個批處理 將所有的文件形成一個 SQL的腳本 最後以@生成的 SQL腳本方式導仔派賀入到目標庫中

OS環境:WINDOWS xp

腳本內容如下:

@echo off if exist list sql del list sql /q :input cls set input=: set /p input= 請輸入要進念派行判斷的路徑 set "input=%input:"=%" :: 上面這句為判斷%input%中是否存在引號 有則剔除 if "%input%"==":" goto input if not exist "%input%" goto input for /f "delims=" %%i in ( dir /b /a d /s "%input%" ) do echo @@%%~fnxi>>list sql if not exist list sql goto no_file start list sql exit :no_file cls echo %cur_dir% 出現錯誤 未成功生成list sql腳本! pause

使用:

另存為 BAT類型文件後 雙擊執行

輸入你腳本的路徑:

如我的E盤CRY文件夾下 有如下類型的文件:

TEST PRC

TEST FNC(有子文件夾 )

TEST VW

執行該批處理後 最後生成的list sql腳本文件內容如下(執行完批處理後會用默認的編輯器自動打開該文件):

@@E:cryTEST PRC

@@E:cry TEST FNC

@@E:cryTEST VW

打開SQLPLUS 以指定用戶登錄資料庫 然後執行: (我的腳本文件羨磨生成在d盤)

@D:list sql

這樣所有的對象就會自動在指定用戶下生成

lishixin/Article/program/SQLServer/201311/22286

㈡ 如何在一個bat文件中執行多個sql語句

使用批處理bat文件執行多個sql語句的方法:

一、示例表格tt結構如圖:

㈢ 我有一堆sql文件需要運行 如何批量運行

可以使用批處理,調用 isql 執行 .sql文件。

1、 新建test.sql 文件。如圖,代碼執行刪除 表a中id='1'的記錄。

3、運行批處理test.bat即可執行,test.sql中的SQL語句。

㈣ 在BAT批處理文件中執行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 文件並查看運行結果。

㈤ sql資料庫 通過批處理.bat來處理執行sql文件

應該還是在雙擊運行的時候缺少路徑所致(python2.7好像也有這個問題)

你試試在批處理中添加一下path變數:

setpath=%path%;x:xxxosql.exe

或者使用osql.exe的時候直接使用全路徑:

"x:xxxosql.exe"-h-sxxxxxxx

㈥ 如何利用BAT文件登陸OracleSql並執行多個sql腳本PLSQL語句

首先,做一個簡單的sql文件(log.sql)。

在這個SQL文件中我們創建了一個表。

接下來,我們來建一個bat批處理文件(log.bat)。

在這個bat文件裡面我們調用絕棗碰對路徑的sql文件,並將執行過程及結果輸出到log.txt文件中。

最後,我們運行bat文件,執行多個sql腳本plsql語句。

㈦ sql資料庫 通過批處理.bat來處理執行sql文件

應該還是在緩頌槐雙擊運行的時候擾友缺少路徑所致(python2.7好像也有這櫻敏個問題)

你試試在批處理中添加一下path變數:

setpath=%path%;x:xxxosql.exe

或者使用osql.exe的時候直接使用全路徑:

"x:xxxosql.exe"-h-sxxxxxxx

㈧ 如何使用sqlcmd在批處理腳本中執行SQL

使用sqlcmd可以在批處理腳本中執行SQL。雖然這個命令的參數很多,但幸運的是,我們不需要全部理解,在這里簡要介紹以下幾個:x0dx0a{ -U login_id [ -P password ] } | _E trusted connection }] 如果指定了-E就不需要指定用戶名密碼,當然指定了用戶名密碼就不用-E了;x0dx0a-S server_name [ \ instance_name ] 資料庫伺服器,如果不在本機的話必須指定;x0dx0a-d db_name 資料庫名字,必須的;x0dx0a[ -i input_file ] [ -o output_file ] sql存在文件里的話用-i,輸出到文件用-o;x0dx0a[ -q "cmdline query" ] [ -Q "cmdline query" and exit ] 輸入是簡單的sql,不用文件,推薦用-Q,如果你執行完sqlcmd還需要執行別的動作的話;x0dx0a[ -W remove trailing spaces ] 刪除多餘的空格,結果會更緊湊。x0dx0a當我們在真正的腳本中執行sql時,通常需要傳入和輸出變數。x0dx0a傳入變數比較簡單,如下所示:x0dx0asqlcmd -d test -Q "select * from dbo.Investment where investor=$(x)" -v x='IBM' -Wx0dx0a這個語句從test資料庫的Investment表中選出investor等於x的所有行,注意到變數x被包含在${}中。x0dx0a然後用-v定義了x的值,'IBM'。x0dx0a-W確定輸出的結果不包含多餘的空格。x0dx0ax的值如果沒有在sqlcmd中設定,系統會試圖從別的地方去尋找,可能的地方包括,系統環境變數,用戶環境變數,以及用在sqlcmd之前用set設定的變數值。x0dx0a如果你的數據里確實包含${},那麼你並不希望進行變數的替換,使用-x選項可以禁止變數的替換。x0dx0a有些時候,你還希望能獲得sql執行結果並保存到變數中。比如你們的日誌系統每天都在產生日誌文件,你要執行一個腳本來處理這些日誌文件並存到資料庫中。在處理之前,你必須讀取資料庫以確定上次處理到那一天了。你期望這樣能解決你的問題:x0dx0asqlcmd -d test -Q "select ${x}=max(date) from dbo.logDates " -Wx0dx0a但這樣並不工作。因為sqlcmd並不提供輸出變數。x0dx0a不過你可以這樣做:x0dx0asqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbo.logDates;print @x; " -Wx0dx0a這樣你就可以得到一個乾乾凈凈的數字,而不會包含列名和其他信息。x0dx0a接著你將上述結果導入到一個文件里:x0dx0asqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbo.logDates;print @x; " -W 1.txtx0dx0a現在到了最關鍵的一步,將文件的內容寫入到變數里:x0dx0aset /P myvar=<1.txtx0dx0a/p表明這個變數myvar的值需要用戶輸入;x0dx0a<1.txt表明從1.txt中讀入而不是從其他地方讀入。x0dx0a這樣,我們就巧妙的把sql執行的結果寫入到變數里了。

㈨ 怎麼用批處理*.bat 執行文件目錄下面的SQL語句腳本(批量的)

sql腳本應該是你在管理器中導入執行吧

㈩ 我在BAT批處理裡面執行SQL,設置變數set /a f=select vcb from XXX

set f=1
set /a f=%f%+1
REM 這時候 %f% 是2

這樣輪銀才會遞增空桐纖。
C:\Windows\system32>set f=1
C:\Windows\斗仿system32>set /a f=%f%+1
2
C:\Windows\system32>set /a f=%f%+1
3
C:\Windows\system32>set ff="select vcb from XXX"
C:\Windows\system32>echo %ff%
"select vcb from XXX"
C:\Windows\system32>