2009-10-08 3 views
0

Я получаю сообщение об ошибке SQL*Loader -606, что означает:SQL * Loader проблема

Синоним указанный в предложении INTO TABLE в элементе управления Loader SQL * файл определяет удаленный объект с помощью базы данных ссылка. Только синоним для существующей локальной таблицы может быть указан в предложении INTO TABLE.

Есть ли способ, который мы можем вставить в удаленную таблицу с помощью SQL * Loader?

+0

Какую версию базы данных используете? – APC

+0

SQL * Plus: Release 10.2.0.4.0 – Vijay

ответ

6

Поскольку вы находитесь на 10g, вы можете использовать внешние таблицы вместо SQL Loader.

Настройка внешней таблицы очень проста. Find out more.

Чтобы получить внешнюю таблицу, чтобы подобрать новый файл (который вы, возможно, придется сделать, потому что у вас есть повторяющийся процесс), сделайте следующее:

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

Тогда вы можете сделать это:

insert into [email protected]_db 
    select * from your_ext_table_name 
/

Это позволяет избежать двух партий DML. Внешние таблицы не так быстро, как хорошо настроенный процесс SQL * Loader, но это будет тривиально по сравнению с налогом на сетевой трафик (что неизбежно в вашем сценарии).

2
create table temp_table as select * from [email protected]_db where 1 = 2; 

load using sql*loader into temp_table; 

insert into [email protected]_db select * from temp_table; 
+0

+1 Большинство проблем с SQL * Loader легче решить в SQL. Вот почему внешние столы - такое благо. – APC

+0

@Robert. Спасибо за предложение, но если стол - огромный стол! то вы не думаете, что это займет много времени, чтобы вставить, а также создать, и это должно регулярно исполняться в форме процесса, поэтому я боюсь, это будет приемлемым решением или нет! – Vijay

+2

Тогда почему бы вам не позволить sqlldr подключиться к удаленной базе данных? sqlldr имя пользователя/пароль @ tnsalias У вас есть доступ к удаленной базе данных с помощью tnsalias, иначе databaselink не будет работать –

1

Запустить SQL-загрузчик на сервере с таблицей?

Должна быть причиной, почему нет, но это кажется мне самым простым.

+0

У меня нет доступа к этому серверу для запуска nythg. :) – Vijay

0

Если вы не смогли использовать внешние таблицы (например, поскольку файл данных находится на клиентской машине, а не на сервере базы данных), вы можете вставить его в представление на удаленном объекте.

Например

create database link schema1 connect to schema1 identified by schema1 using 'XE'; 
create view schema1_test_vw as select * from [email protected]; 

load data 
infile * 
append 
into table schema1_test_vw 
(id POSITION(1:4) INTEGER) 
begindata 
1001 
1002 
1003 

удалось на моем ХЕ испытания. Для просмотра всех размеров столбцов, типов данных и т. Д. Фиксированы в локальной схеме, поэтому sqlldr не имеет проблемы.