SQL*加载器问题
我得到一个错误-606,这意味着: 在INTO中指定的同义词 SQL*加载程序控件中的TABLE子句 文件通过 数据库链接。只是一个单词的同义词 可以指定现有的本地表 在INTO TABLE子句中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
是否有任何方法可以使用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。:)您使用的是哪个版本的数据库?您使用的是哪个版本的数据库?