В Oracle, как мне сделать внешнюю таблицу, которая имеет ту же структуру, что и существующая таблица?

Я знаю, что вы можете создать таблицу для экспорта следующим образом:

create table bulk_mbr organization external( 
type ORACLE_DATAPUMP
default directory jason_home 
location ('mbr.dat')) 
as SELECT * FROM mbr;

Но я хотел бы сделать что-то подобное для импорта, чтобы я мог создать внешнюю таблицу импорта с такой же структурой, как у существующей таблицы, загрузить в нее данные, а затем выполнить простой запрос INSERT INTO/SELECT FROM, чтобы переместить данные там. Есть ли способ сделать это?

Я пробовал это, но это не работает:

create table bulk_mbr organization external( 
type ORACLE_LOADER 
default directory jason_home 
location ('mbr.dat')) 
as SELECT * FROM mbr where 1=0;

Но получил:

ORA-30657: операция не поддерживается на внешнем организованном столе

1 ответ

Просто используйте описание вашей таблицы:

SQL> CREATE TABLE bulk_mbr (
  2     ID NUMBER,
  3     d VARCHAR2(4000)
  4  )
  5  ORGANIZATION EXTERNAL (
  6     TYPE ORACLE_LOADER
  7     DEFAULT DIRECTORY jason_home
  8     LOCATION ('mbr.dat')
  9  );

Table created

Либо из вашего репозитория DDL (у вас его нет?:), либо динамически с DBMS_METADATA.get_ddl например.

Другие вопросы по тегам