我收到错误SQL*Loader - 606,表示:
INTO中指定的同义词 SQL * Loader控件中的TABLE子句 file通过a指定远程对象 数据库链接。只是一个同义词 可以指定现有的本地表 在INTO TABLE子句中。
我们是否可以使用SQL * Loader插入远程表?
答案 0 :(得分:6)
因为您使用的是10g,所以可以使用外部表而不是SQL Loader。
设置外部表很容易。 Find out more
要使外部表格获取新文件(您可能需要执行此操作,因为您有重复过程),请执行以下操作:
alter table your_ext_table_name location ('<newfile.name>')
/
然后你可以这样做:
insert into whatever_table@remote_db
select * from your_ext_table_name
/
这避免了两批DML。外部表没有经过良好调优的SQL * Loader过程那么快,但与网络流量税(在您的方案中不可避免)相比,这将是微不足道的。
答案 1 :(得分:2)
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;
答案 2 :(得分:1)
在具有表的服务器上运行SQL Loader?
原因一定不是,但这对我来说似乎最简单。
答案 3 :(得分:0)
如果您无法使用外部表(例如,因为数据文件位于客户端计算机上而不是数据库服务器上),您可以插入远程对象的视图中。
例如
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没有问题。