我有一个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