2014-10-09 43 views
1

我有一个sql脚本,它创建我的应用程序表,序列,触发器等。&插入大约10k行数据。在慢速网络上运行sql脚本

我在慢速网络上,当我从本地机器运行此脚本时,需要很长时间才能完成。 想知道是否有任何支持在sqlplus(或sqldeveloper)在服务器上运行此脚本。因此,整个脚本首先被传输到执行的服务器,然后返回执行的日志文件。

+0

也许你可以创建一个shell脚本或服务器上类似于运行SQL脚本。 – 2014-10-09 13:36:28

+0

是的,但没有对服务器或共存机器的那种访问 – 6ton 2014-10-09 13:42:12

+0

文件有多大,“缓慢”有多慢,以及“多长”有多长? – 2014-10-09 16:17:25

回答

0

不,没有。有些事情可能会使数据加载速度变得更快,例如,如果您正在执行单个插入操作,则使用sql loader,并增加提交间隔。但是,我将不得不看到代码非常有帮助。

+0

是的,我确实添加了提交。数据导入后也会创建约束条件。但不幸的是没有办法解决网络跳跃:( – 6ton 2014-10-09 13:43:13

0

如果您有权访问托管数据库的远程服务器,并且您有权在该服务器上执行sqlplus,那么可以。

  1. 登录或SSH(取决于OS - Windows或* nix中)到 服务器
  2. 在那里创建SQL脚本(myscript.sql)。
  3. 登录到SQL * Plus并执行使用命令@ myscript.sql
0

有很少需要在服务器上运行这些类型的脚本。批量命令的一些简单更改可以显着提高性能。以下所有更改将多条语句组合在一起,从而减少网络往返次数。其中一些还会缩短解析时间,即使脚本在服务器上运行,也会显着提高性能。像这样与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;