在慢速网络上运行sql脚本

时间:2014-10-09 13:10:13

标签: oracle sqlplus

我有一个sql脚本,可以创建我的应用程序表,序列,触发器等。插入大约10k行数据。

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

3 个答案:

答案 0 :(得分:0)

不,没有。有些事情你可以做,数据加载可能会更快,例如,如果你正在进行单独的插入,使用sql loader,并增加你的提交间隔。但是,我必须看到代码真的非常有用。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

很少需要在服务器上运行这些类型的脚本。对批处理命令进行一些简单的更改可以显着提高性能。下面的所有更改都结合了多个语句,减少了网络往返次数。其中一些还减少了解析时间,即使脚本在服务器上运行,也会显着提高性能。

将INSERT合并为一个语句

替换单个插页:

insert into some_table values(1);
insert into some_table values(2);
...

使用这样的combind插入:

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;