我有一個sql腳本,它創建我的應用程序表,序列,觸發器等。&插入大約10k行數據。在慢速網絡上運行sql腳本
我在慢速網絡上,當我從本地機器運行此腳本時,需要很長時間才能完成。 想知道是否有任何支持在sqlplus(或sqldeveloper)在服務器上運行此腳本。因此,整個腳本首先被傳輸到執行的服務器,然後返回執行的日誌文件。
我有一個sql腳本,它創建我的應用程序表,序列,觸發器等。&插入大約10k行數據。在慢速網絡上運行sql腳本
我在慢速網絡上,當我從本地機器運行此腳本時,需要很長時間才能完成。 想知道是否有任何支持在sqlplus(或sqldeveloper)在服務器上運行此腳本。因此,整個腳本首先被傳輸到執行的服務器,然後返回執行的日誌文件。
不,沒有。有些事情可能會使數據加載速度變得更快,例如,如果您正在執行單個插入操作,則使用sql loader,並增加提交間隔。但是,我將不得不看到代碼非常有幫助。
是的,我確實添加了提交。數據導入後也會創建約束條件。但不幸的是沒有辦法解決網絡跳躍:( – 6ton 2014-10-09 13:43:13
如果您有權訪問託管數據庫的遠程服務器,並且您有權在該服務器上執行sqlplus,那麼可以。
有很少需要在服務器上運行這些類型的腳本。批量命令的一些簡單更改可以顯着提高性能。以下所有更改將多條語句組合在一起,從而減少網絡往返次數。其中一些還會縮短解析時間,即使腳本在服務器上運行,也會顯着提高性能。像這樣與combind插入
insert into some_table values(1);
insert into some_table values(2);
...
:
合併插入到一個單獨的語句
更換單個刀片
insert into some_table
select 1 from dual union all
select 2 from dual union all
...
使用PL/SQL塊
更換個別DDL:
create sequence sequence1;
create sequence sequence2;
用PL/SQL塊:
begin
execute immediate 'create sequence sequence1';
execute immediate 'create sequence sequence2';
end;
/
使用內嵌的約束
結合DDL儘可能。例如,使用以下語句:
create table some_table(a number not null);
取而代之的是:
create table some_table(a number);
alter table some_table modify a not null;
也許你可以創建一個shell腳本或服務器上類似於運行SQL腳本。 – 2014-10-09 13:36:28
是的,但沒有對服務器或共存機器的那種訪問 – 6ton 2014-10-09 13:42:12
文件有多大,「緩慢」有多慢,以及「多長」有多長? – 2014-10-09 16:17:25