Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да генерирам програмно DDL от базата данни на Oracle?

Пакетът DBMS_METADATA (ако приемем, че използвате сравнително нова версия на Oracle) ще генерира DDL за всеки обект в базата данни. Така че

SELECT dbms_metadata.get_ddl( 'TABLE', 'TABLEA', 'SCHEMAA' )
  FROM dual;

ще върне CLOB с DDL за SchemaA.TableA. Можете да хванете изключението, което се хвърля, че обектът не съществува, но бих предложил да направите заявка към речника на данните (т.е. DBA_OBJECTS), за да проверите дали има таблица с име TableA в SchemaA, т.е.

SELECT COUNT(*) 
  FROM dba_objects
 WHERE owner = 'SCHEMAA'
   AND object_name = 'TABLEA'
   AND object_type = 'TABLE'

Имайте предвид, че ако нямате достъп до DBA_OBJECTS, можете да използвате ALL_OBJECTS вместо това. Притеснението там обаче е, че може да има TableA в SchemaA, до която нямате достъп SELECT. Тази таблица няма да се появи във ALL_OBJECTS (която има всички обекти, до които имате достъп), но ще се появи в DBA_OBJECTS (която има всички обекти в базата данни, независимо от възможността ви за достъп до тях).

След това можете да запишете DDL във файл или, ако броят е 0, да посочите, че обектът не съществува. От съхранена процедура можете да използвате пакета UTL_FILE, за да пишете във файл на сървъра на базата данни. Ако се опитвате да пишете във файл на клиентската файлова система, ще трябва да използвате език, който има достъп до ресурсите на клиентската операционна система. Една малка C/ Java/ Perl/ и т.н. програма трябва да може да избере CLOB и да запише тези данни във файл на клиентската операционна система.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Групово вмъкване в Oracle с помощта на .NET

  2. Oracle SQL заявка:Извличане на най-новите стойности за група въз основа на времето

  3. Как да изброите всички таблици в Oracle

  4. Какво представлява Oracle SQL и PL/SQL? Всичко, което един начинаещ трябва да знае

  5. Избройте всички тригери в базата данни на Oracle