2009-10-14 5 views

ответ

20

Если вы хотите увидеть DDL для объектов, вы можете использовать

select dbms_metadata.get_ddl('OBJECT_TYPE','OBJECT_NAME','OBJECT_OWNER') 
    from dual 
/

Например, это даст вам сценарий DDL для emp таблицы.

select dbms_metadata.get_ddl('TABLE','EMP','HR') 
    from dual 
/

Вы, возможно, потребуется установить формат long типа с большим числом. Для пакетов вам необходимо получить доступ к таблицам dba_source, user_source, all_source. Вы можете запросить имя и тип объекта, чтобы узнать, какой код хранится.

+2

Долгое упоминание здесь - вот что. "set long 200000 страниц 0 строк 131" – Nap

1

Основной ответ: «использовать пакет dbms_metadata». Акционерный вопрос:

Но что, если я хочу сгенерировать скрипт для всех таблиц за раз?

И ответ, по-видимому, является опрашивать каталог системы для имен и владельцев всех таблиц:

SELECT dbms_metadata.get_ddl('TABLE', s.tabname, s.tabowner) 
    FROM system_catalog_describing_tables AS s 
WHERE ...any conditions that are needed... 

Я не достаточно знаком с Oracle знать системный каталог. В Informix, который я знаю, если предположить, что существует процедура dbms_metadata.get_ddl, запрос будет:

SELECT dbms_metadata.get_ddl('TABLE', s.tabname, s.owner) 
    FROM "informix".systables AS s 
WHERE tabid >= 100 AND tabtype = 'T'; 

В Informix, tabids менее 100 зарезервированы для системного каталога, а не-таблицы (представления, синонимы , последовательности и несколько других эзотерических вещей) исключаются из-за необходимости использования «табуляции».

4

В Oracle местоположение, содержащее информацию обо всех объектах базы данных, включая таблицы и хранимые процедуры, называется Словарем данных. Это набор представлений, который предоставляет вам доступ к метаданным, определяющим базу данных. Вы можете запросить представления словаря данных для списка желаемых объектов базы данных, а затем использовать функции, доступные в пакете dbms_metadata, чтобы получить DDL для каждого объекта. Альтернативой является исследование поддержки в dbms_metadata для экспорта DDL для коллекции объектов.

За несколько указателей, например, чтобы получить список таблиц, вы можете использовать следующий словарь данных рассматривает

  • user_tables содержит все таблицы, принадлежащие пользователю
  • all_tables содержит все таблицы, которые доступны пользователь
  • и так далее ...
49
+0

Это именно то, что я искал, так что спасибо – Asaf

+0

Если у вас длинный список java sp, который вы обычно не хотите сценаризировать, это кошмар. –

+0

Что значит «sp»? –

1

Oracle SQL Developer> View> DBA> Выбрать подключение> Expand> Безопасность> Пользователи> Щелкните правой кнопкой мыши вашего пользователя> Создать как> Заполните поля> Копировать SQL скрипт> Закрыть

Если ваш пользователь имеет права на объекты, сделайте это также

Oracle SQL Developer> View> DBA> Выберите ваше соединение> Развернуть> Безопасность> Пользователи> Дважды щелкните по вашему пользователю> Объект Privs> Выбрать все данные> Щелкните правой кнопкой мыши> Экспорт> Экспорт как текстовый файл

Редактируйте этот текстовый файл, чтобы предоставить объектные привилегии вашему пользователю.

8

Это работает для меня:

  • В SQL Developer, щелкните правой кнопкой мыши на объект, который вы хотите создать скрипт для. то есть имя таблицы
  • Выберите «Быстрая библиотека DLL»> «Сохранить в файл»
  • Затем будет записан оператор create во внешний файл sql.

Примечание. Вы также можете выделить несколько объектов одновременно, чтобы вы могли сгенерировать один скрипт, содержащий инструкции create для всех таблиц в базе данных.

+0

Хороший ответ. Одно небольшое разъяснение. По крайней мере, в текущей версии SQL Developer, если вы выберете несколько хранимых процедур и сделаете «Quick DDL», вы не получите тело SP. Для этого вам нужно открыть несколько хранимых процедур, чтобы вы могли увидеть часть дерева, которая ссылается на Тело, и выберите несколько из них, а затем выполните «Быстрый DDL». Спасибо за ответ - именно то, что я искал. – glaucon

0

Это работает для меня:

PL SQL Developer -> Инструменты -> Экспорт пользовательских объектов

Выберите флажков: Включить привилегии и Включить хранение

Выберите имя файла. Хит экспорт.

Впоследствии вы можете использовать сгенерированный файл экспорта для создания таблицы в другой схеме.

+1

Разработчик SQL и разработчик PL/SQL - это разные программы. –

+0

работал в PL SQL Developer. –

0

Ставка 1. select * from <tablename>;

стадия 2. просто щелкните правой кнопкой мыши на вашем выходе (т. е. данные), затем перейдите к последнему варианту экспорта, он даст вам некоторое расширение, затем нажмите на требуемое расширение, а затем примените. u получит новый файл, включая данные.

Смежные вопросы