SQL*Loader问题

发布于 2024-08-06 21:08:53 字数 345 浏览 3 评论 0原文

我收到错误 SQL*Loader-606,其中方法:

INTO 中指定的同义词 SQL*Loader 控件中的 TABLE 子句 file 通过 a 指定远程对象 数据库链接。只是一个同义词 可以指定现有的本地表 在 INTO TABLE 子句中。

有什么方法可以使用 SQL*Loader 插入远程表吗?

I am getting an error SQL*Loader-606, which means:

The synonym specified in the INTO
TABLE clause in the SQL*Loader control
file specifies a remote object via a
database link. Only a synonym for an
existing local table can be specified
in the INTO TABLE clause.

Is there any way we can insert into remote table using SQL*Loader?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

吃颗糖壮壮胆 2024-08-13 21:08:53

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

设置外部表很容易。 了解更多信息

要让外部表选取一个新文件(您可能需要这样做,因为您有一个重复的过程),请执行以下操作:

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

然后您可以执行以下操作:

insert into whatever_table@remote_db
    select * from your_ext_table_name 
/

这可以避免两次 DML。外部表不如经过精心调优的 SQL*Loader 进程那么快,但与网络流量税(这在您的场景中是不可避免的)相比,这将是微不足道的。

Because you are on 10g you can use External Tables instead of SQL Loader.

Setting up an External Table is easy. Find out more.

To get the External Table to pick up a new file (which you may need to do because you have a repeating process), do this:

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

Then you can do this:

insert into whatever_table@remote_db
    select * from your_ext_table_name 
/

This avoids two lots of DML. External tables are not as fast as a well-tuned SQL*Loader process, but that will be trivial compared to the network traffic tax (which is unavoidable in your scenario).

梦行七里 2024-08-13 21:08:53
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;
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;
季末如歌 2024-08-13 21:08:53

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

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

Run SQL Loader on the server that has the table?

Must be a reason why not, but this seems the simplest to me.

月依秋水 2024-08-13 21:08:53

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

例如,

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 不会有问题。

If you couldn't use external tables (eg because the data file is on a client machine rather than on the database server), you can insert into a view on the remote object.

For example

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

succeeded on my XE test.
For a view all the column sizes,datatypes etc are fixed on the local schema so sqlldr doesn't have a problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文