2013-10-24 68 views
0

我需要通過將Oracle SQL文件拆分爲兩個文件來修改Oracle SQL文件,但我對Oracle沒有經驗。這是我現在有:我需要拆分Oracle SQL腳本

linkload.bat

SQLPLUSW /nolog @linkload.txt 

linkload.txt

CONNECT ABC/[email protected]; 

spool E:\DataLoad\MovDataProductionJob\updclust.log; 

select systimestamp start_time from dual; 

@E:\DataUpd\UpdClust.sql 

-- call load_schedule(); 

select systimestamp updclust_end_time from dual; 

----comment/ uncomment following for disabling/ enabling load or schedule load depends on count 

call load_schedule_10G(); 

select systimestamp end_time from dual; 

--spool off; 

disconnect; 

exit; 

我需要拆分linkload.txt讓第一個文件包含的功能直到幷包括@E:\DataUpd\UpdClust.sql行,第二個文件包含之後的所有功能。我意識到這並不像將文件分開一樣簡單,並且通過無法控制的情況,我無法訪問SQLDeveloper甚至無法使用開發服務器來嘗試此操作。所以這就是爲什麼我把它帶到StackOverflow。

這就是我想出了:

linkload.bat

SQLPLUSW /nolog @linkload1.txt 
SQLPLUSW /nolog @linkload2.txt 

linkload1.txt

CONNECT ABC/[email protected]; 

spool E:\DataLoad\MovDataProductionJob\updclust.log; 

select systimestamp start_time from dual; 

@E:\DataUpd\UpdClust.sql 

--spool off; 

disconnect; 

exit; 

linkload2.txt

CONNECT ABC/[email protected]; 

-- call load_schedule(); 

select systimestamp updclust_end_time from dual; 

----comment/ uncomment following for disabling/ enabling load or schedule load depends on count 

call load_schedule_10G(); 

select systimestamp end_time from dual; 

disconnect; 

exit; 

這看起來是否正確?我最不確定的是spool命令,如果它需要在兩個文件中。就像我之前說過的,在進入臨時環境之前,我沒有辦法測試它。對於任何反饋,我們都表示感謝。

+1

您還需要在第二個腳本中使用spool命令,因爲這就是告訴sqlplus將SELECT的輸出保存到文件。但第二個腳本中的spool命令將需要APPEND參數,否則它將覆蓋第一個文件的輸出。 – Joe

+0

謝謝。我做了改變,這似乎是有道理的。我已將其發送給我的組織中的DBA,以在我們的臨時數據庫上執行。 –

+0

@Joe,我相信這是有效的。如果您想根據您的評論提交答案,我會立即投票並將其標記爲已接受。 –

回答

1

您還需要在第二個腳本中使用spool命令,因爲這就是告訴sqlplus將SELECT的輸出保存到文件。但第二個腳本中的spool命令將需要APPEND參數,否則它將覆蓋第一個文件的輸出。