Oracle中獲取TABLE的DDL語句的方法
獲取表的DDL的方法
在獲取表的DDL的時候,可以使用多種方法進行獲取:
1、利用 DBMS_METADATA.GET_DDL,獲取表的 DDL 語句
2、imp.indexfile
3、impdp.sqlfile
1、利用 DBMS_METADATA.GET_DDL,獲取表的 DDL 語句
方法1:
SQL PLUS中執行:
首先執行 set echo off set heading off set feedback off set verify off set pagesize 0 set linesize 132 define schema=&1 輸入schema的名字 然後執行: define CR=chr(10) define TAB=chr(9) col x noprint col y noprint SELECT TABLE_NAME Y ,0 X ,'CREATE TABLE ' || RTRIM(TABLE_NAME) || '(' FROM DBA_TABLES WHERE OWNER = UPPER('&schema') UNION SELECT TC.TABLE_NAME Y ,COLUMN_ID X ,DECODE(COLUMN_ID, 1, ' ', ' ,') || RTRIM(COLUMN_NAME) || &TAB || &TAB || RTRIM(DATA_TYPE) || RTRIM(DECODE(DATA_TYPE, 'DATE', NULL, 'LONG', NULL, 'NUMBER', DECODE(TO_CHAR(DATA_PRECISION), NULL, NULL, '('), '(')) || RTRIM(DECODE(DATA_TYPE, 'DATE', NULL, 'CHAR', DATA_LENGTH, 'VARCHAR2', DATA_LENGTH, 'NUMBER', DECODE(TO_CHAR(DATA_PRECISION), NULL, NULL, TO_CHAR(DATA_PRECISION) || ',' || TO_CHAR(DATA_SCALE)), 'LONG', NULL, '******ERROR')) || RTRIM(DECODE(DATA_TYPE, 'DATE', NULL, 'LONG', NULL, 'NUMBER', DECODE(TO_CHAR(DATA_PRECISION), NULL, NULL, ')'), ')')) || &TAB || &TAB || RTRIM(DECODE(NULLABLE, 'N', 'NOT NULL', NULL)) FROM DBA_TAB_COLUMNS TC ,DBA_OBJECTS O WHERE O.OWNER = TC.OWNER AND O.OBJECT_NAME = TC.TABLE_NAME AND O.OBJECT_TYPE = 'TABLE' AND O.OWNER = UPPER('&schema') UNION SELECT TABLE_NAME Y ,999999 X ,')' || &CR || ' STORAGE(' || &CR || ' INITIAL ' || INITIAL_EXTENT || &CR || ' NEXT ' || NEXT_EXTENT || &CR || ' MINEXTENTS ' || MIN_EXTENTS || &CR || ' MAXEXTENTS ' || MAX_EXTENTS || &CR || ' PCTINCREASE ' || PCT_INCREASE || ')' || &CR || ' INITRANS ' || INI_TRANS || &CR || ' MAXTRANS ' || MAX_TRANS || &CR || ' PCTFREE ' || PCT_FREE || &CR || ' PCTUSED ' || PCT_USED || &CR || ' PARALLEL (DEGREE ' || RTRIM(DEGREE) || ') ' || &CR || ' TABLESPACE ' || RTRIM(TABLESPACE_NAME) || &CR || '/' || &CR || &CR FROM DBA_TABLES WHERE OWNER = UPPER('&schema') ORDER BY 1 ,2;
方法2:
set pagesize 0 set long 90000 set feedback off set echo off spool table_ddl.sql select dbms_metadata.get_ddl('TABLE','tablename','username') from dual; select dbms_metadata.get_ddl('VIEW','viewname','username') from dual; select dbms_metadata.get_ddl('INDEX','indexname','username') from dual; spool off;
2、imp.indexfile
1)先匯出使用者的資料 [oracle@oracle11g ~]$ exp demo/demo file=test.dmp owner=demo log=test.log; 2)從 dump 檔案獲取這些 DDL 語句 [oracle@oracle11g ~]$ imp demo/demo file=test.dmp fromuser=demo touser=demo indexfile=test.sql;
3、impdp.sqlfile
匯出使用者資料 [oracle@oracle11g ~]$ expdp demo/demo directory=DATA_PUMP_DIR dumpfile=sqlfile.dmp schemas=demo; 獲取 DDL 語句 [oracle@oracle11g ~]$ impdp demo/demo directory=DATA_PUMP_DIR dumpfile=sqlfile.dmp sqlfile=demo.sql;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31536355/viewspace-2690829/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle獲取資料庫中的物件建立語句Oracle資料庫物件
- oracle檢視物件DDL語句Oracle物件
- Laravel 獲取執行的sql語句LaravelSQL
- oracle中的條件語句Oracle
- MySQL入門---(一)SQL的DDL語句MySql
- php一句話獲取獲取檔案目錄的方法PHP
- 獲取oracle sql語句詳細些執行計劃OracleSQL
- js 獲取 table 中的每一個tdJS
- create table 使用select查詢語句建立表的方法分享
- 獲取表空間DDL
- Oracle vs PostgreSQL,研發注意事項(2)-DDL語句與事務OracleSQL
- oracle快速拿到重建控制檔案語句的方法二Oracle
- PostgreSQL 函式獲取表DDLSQL函式
- 被oracle搞死的部分語句(持續更新中)Oracle
- 搜尋Oracle DDL中的關鍵字Oracle
- Java獲取Object中Value的方法JavaObject
- mysql中建庫、建表、增刪改查DDL語句MySql
- JavaScript獲取table表格指定列的值JavaScript
- DBeave如何檢視資料庫表的DDL建立語句資料庫
- 6.3. 基本SQL語句——6.3.1. DDLSQL
- Mysql 獲取表設計查詢語句MySql
- Oracle database 19c中獲取當前資料庫版本的方法OracleDatabase資料庫
- ORACLE中sql語句----運算子的優先順序OracleSQL
- 【SQL】14 UNION 操作符、SELECT INTO 語句、INSERT INTO SELECT 語句、CREATE DATABASE 語句、CREATE TABLE 語句SQLDatabase
- ORACLE常用語句:Oracle
- 在oracle中跟蹤會話執行語句的幾種方法Oracle會話
- PostgreSQL獲取建表語句儲存過程SQL儲存過程
- 7種Linux中獲取CPU速度的方法Linux
- datatables 獲取 pageLength 和 pageStart,重新獲取table資料
- JavaScript獲取table表格行與列的數量JavaScript
- MySQL 執行DDL語句 hang住了怎麼辦?MySql
- Oracle基本SQL語句OracleSQL
- Oracle 建立序列語句Oracle
- Sqlserver、oracle中Merge的使用方法,一個merge語句搞定多個Insert,Update,Delete操作SQLServerOracledelete
- 找到Oracle資料庫中效能最差的查詢語句BSOracle資料庫
- 09 獲取需求的方法
- python中for語句讀取生成器Python
- Javascript中的label語句JavaScript