Oracle - Как генерировать сценарий от sql разработчика

40
задан Guru 8 August 2011 в 10:47
поделиться

5 ответов

Если вы хотите увидеть 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
/

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

24
ответ дан 27 November 2019 в 01:17
поделиться

использовать пакет dbms_metadata, как описано здесь

3
ответ дан 27 November 2019 в 01:17
поделиться

The basic answer appears to be 'use the dbms_metadata package'. The axuilliary question is:

But what if I want to generate a script for all the tables at a time?

And the answer, presumably, is to interrogate the system catalog for the names and owners of all the tables:

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

I'm not sufficiently familiar with Oracle to know the system catalog. In Informix, which I do know, assuming that there was a procedure dbms_metadata.get_ddl, the query would be:

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

In Informix, tabids less than 100 are reserved for the system catalog, and non-tables (views, synonyms, sequences and a few other esoteric things) are excluded by requiring the right 'tabtype'.

1
ответ дан 27 November 2019 в 01:17
поделиться

Я не знал о DMBS_METADATA, но ваши ответы побудили меня создать утилиту для создания сценариев всех объектов, принадлежащих пользователю Oracle .

1
ответ дан 27 November 2019 в 01:17
поделиться

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

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

  • user_tables , содержащие все таблицы, принадлежащие пользователю
  • all_tables содержат все таблицы, к которым имеет доступ пользователь
  • и и так далее ...
4
ответ дан 27 November 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: