Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara menghasilkan DDL secara terprogram dari database Oracle?

Paket DBMS_METADATA (dengan asumsi Anda menggunakan versi Oracle yang cukup baru) akan menghasilkan DDL untuk objek apa pun dalam database. Jadi

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

akan mengembalikan CLOB dengan DDL untuk SchemaA.TableA. Anda dapat menangkap pengecualian yang dilemparkan bahwa objek tidak ada, tetapi saya cenderung menyarankan agar Anda menanyakan kamus data (yaitu DBA_OBJECTS) untuk memverifikasi bahwa ada tabel bernama TableA di SchemaA, yaitu

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

Perhatikan bahwa jika Anda tidak memiliki akses ke DBA_OBJECTS, Anda dapat menggunakan ALL_OBJECTS sebagai gantinya. Kekhawatiran di sana, bagaimanapun, adalah bahwa mungkin ada TableA di SchemaA yang Anda tidak memiliki akses SELECT. Tabel tersebut tidak akan muncul di ALL_OBJECTS (yang memiliki semua objek yang dapat Anda akses) tetapi akan muncul di DBA_OBJECTS (yang memiliki semua objek dalam database terlepas dari kemampuan Anda untuk mengaksesnya).

Anda kemudian dapat menulis DDL ke file atau, jika hitungannya 0, menunjukkan bahwa objek tidak ada. Dari prosedur tersimpan, Anda dapat menggunakan paket UTL_FILE untuk menulis ke file di server database. Jika Anda mencoba menulis ke file di sistem file klien, Anda perlu menggunakan bahasa yang memiliki akses ke sumber daya sistem operasi klien. Program kecil C/ Java/ Perl/ dll. harus dapat memilih CLOB dan menulis data tersebut ke file pada sistem operasi klien.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Panggil fungsi pl/sql di java?

  2. Mematikan dan Memulai Instans Oracle

  3. Bisakah kita menggunakan threading di PL/SQL?

  4. Apakah ada cara, di ORACLE, untuk menggabungkan beberapa baris baris menjadi satu, menggunakan dua tabel, di mana nilai akhir dipisahkan dengan koma?

  5. Bagaimana cara mengubah 2 kueri dengan kolom umum (A, B) dan (A, C) menjadi hanya satu (A, B, C)?