SQL*加载器问题

SQL*加载器问题,sql,oracle,unix,sql-loader,Sql,Oracle,Unix,Sql Loader,我得到一个错误-606,这意味着: 在INTO中指定的同义词 SQL*加载程序控件中的TABLE子句 文件通过 数据库链接。只是一个单词的同义词 可以指定现有的本地表 在INTO TABLE子句中 是否有任何方法可以使用SQL*Loader插入远程表?在拥有该表的服务器上运行SQL Loader create table temp_table as select * from remote_table@remote_db where 1 = 2; load using sql*loader i

我得到一个错误-606,这意味着:

在INTO中指定的同义词 SQL*加载程序控件中的TABLE子句 文件通过 数据库链接。只是一个单词的同义词 可以指定现有的本地表 在INTO TABLE子句中


是否有任何方法可以使用SQL*Loader插入远程表?

在拥有该表的服务器上运行SQL Loader

create table temp_table as select * from remote_table@remote_db where 1 = 2;

load using sql*loader into temp_table;

insert into remote_table@remote_db select * from temp_table;

这一定是不这样做的原因,但对我来说这似乎是最简单的。

在具有表的服务器上运行SQL Loader


这肯定是一个原因,但对我来说这似乎是最简单的。

因为您使用的是10g,所以可以使用外部表而不是SQL Loader

设置外部表格很容易

要使外部表拾取新文件(由于有一个重复的过程,因此可能需要执行此操作),请执行以下操作:

alter table your_ext_table_name location ('<newfile.name>')
/

这避免了两批DML。外部表的速度不如经过良好调优的SQL*加载器进程快,但与网络流量税(在您的场景中这是不可避免的)相比,这将是微不足道的

因为您使用的是10g,所以可以使用外部表而不是SQL Loader

设置外部表格很容易

要使外部表拾取新文件(由于有一个重复的过程,因此可能需要执行此操作),请执行以下操作:

alter table your_ext_table_name location ('<newfile.name>')
/

这避免了两批DML。外部表的速度不如经过良好调优的SQL*加载器进程快,但与网络流量税(在您的场景中这是不可避免的)相比,这将是微不足道的

如果无法使用外部表(例如,因为数据文件位于客户机上而不是数据库服务器上),则可以插入远程对象上的视图

比如说

create database link schema1 connect to schema1 identified by schema1 using 'XE';
create view schema1_test_vw as select * from test@schema1;

load data
 infile *
 append
 into table schema1_test_vw
 ( id POSITION(1:4) INTEGER)
begindata
1001
1002
1003
我的XE测试成功了。
对于视图,所有列大小、数据类型等都固定在本地架构上,因此sqlldr没有问题。

如果无法使用外部表(例如,因为数据文件位于客户端计算机上,而不是数据库服务器上),则可以插入远程对象上的视图

比如说

create database link schema1 connect to schema1 identified by schema1 using 'XE';
create view schema1_test_vw as select * from test@schema1;

load data
 infile *
 append
 into table schema1_test_vw
 ( id POSITION(1:4) INTEGER)
begindata
1001
1002
1003
我的XE测试成功了。
对于视图,所有列大小、数据类型等都固定在本地架构上,因此sqlldr不会出现问题。

+1大多数SQL*加载程序问题在SQL中更容易解决。“这就是为什么外置桌子是个好东西。”罗伯特。谢谢你的建议,但是如果桌子是个大桌子的话!那么你不认为这将花费大量的时间来插入和创建,并且这应该以过程的形式定期执行,所以我担心这将是一个可行的解决方案或不是!!那么为什么不让sqlldr连接到远程数据库sqlldr用户名呢/password@tnsalias您可以使用tnsalias访问远程数据库,否则databaselink将无法工作是,Robert我也在做同样的事情,但问题是,正如我上面提到的,INTO TABLE子句将使用一个同义词,表示本地现有表:)@crasher:Robert的意思是不要连接到本地数据库,并通过数据库链接点击另一个数据库。。。直接点击另一个数据库。SQL*Loader可以直接连接到远程数据库,但不能插入到数据库链接中。直接连接到远程数据库。不要将本地数据库用作中介。+1大多数SQL*加载器问题在SQL中更容易解决。“这就是为什么外置桌子是个好东西。”罗伯特。谢谢你的建议,但是如果桌子是个大桌子的话!那么你不认为这将花费大量的时间来插入和创建,并且这应该以过程的形式定期执行,所以我担心这将是一个可行的解决方案或不是!!那么为什么不让sqlldr连接到远程数据库sqlldr用户名呢/password@tnsalias您可以使用tnsalias访问远程数据库,否则databaselink将无法工作是,Robert我也在做同样的事情,但问题是,正如我上面提到的,INTO TABLE子句将使用一个同义词,表示本地现有表:)@crasher:Robert的意思是不要连接到本地数据库,并通过数据库链接点击另一个数据库。。。直接点击另一个数据库。SQL*Loader可以直接连接到远程数据库,但不能插入到数据库链接中。直接连接到远程数据库。不要将本地数据库用作中介。我没有访问该服务器的权限,无法在其上运行nythg。:)我没有访问该服务器的权限,无法在其上运行nythg。:)您使用的是哪个版本的数据库?您使用的是哪个版本的数据库?