Показаны сообщения с ярлыком sqlplus. Показать все сообщения
Показаны сообщения с ярлыком sqlplus. Показать все сообщения

пятница, 9 марта 2012 г.

Extract Oracle DDL to File

Простой скрипт для выгрузки DDL-кода Oracle-объекта в файл.

GenDDL.sql:
SET TERMOUT OFF
SET VERIFY OFF
SET ECHO OFF
SET LONG 9000000
SET LONGC 900
SET LINES 400
SET TRIMSPOOL ON
SET PAGES 0
SET FEEDBACK OFF
SET HEAD OFF
SET SQLBLANKLINES OFF
SET SERVEROUTPUT ON

BEGIN
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform,
                                      'PRETTY',
                                      TRUE);
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform,
                                      'SQLTERMINATOR',
                                      TRUE);
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform,
                                      'SEGMENT_ATTRIBUTES',
                                      FALSE);
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform,
                                      'STORAGE',
                                      FALSE);
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform,
                                      'TABLESPACE',
                                      FALSE);
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform,
                                      'REF_CONSTRAINTS',
                                      TRUE);
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform,
                                      'SPECIFICATION',
                                      TRUE);
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform,
                                      'BODY',
                                      TRUE);
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform,
                                      'CONSTRAINTS',
                                      TRUE);
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform,
                                      'STORAGE',
                                      TRUE);
   DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform,
                                      'CONSTRAINTS_AS_ALTER',
                                      TRUE);
END;
/

SPOOL '&&3'

BEGIN
   FOR i IN (SELECT owner,
                    object_type,
                    object_name,
                    created d
               FROM all_objects
              WHERE owner = '&&1' AND object_name = '&&2')
   LOOP
      DBMS_OUTPUT.Put_Line (
         DBMS_METADATA.get_ddl (REPLACE (i.object_type, ' ', '_'),
                                i.object_name,
                                i.owner));
   END LOOP;
END;
/

SPOOL OFF

EXIT
Используется 3 входных параметра:
1) Пользователь (схема);
2) Объект;
3) Файл для выгрузки.

Пример запуска:
rlwrap sqlplus -silent=true objectman@XE/objectman @/home/maksim/projects/AntOraDDL/GenDDL.sql OBJECTMAN MYBOOKS /home/maksim/projects/AntOraDDL/mybooks.sql

воскресенье, 4 марта 2012 г.

Автодополнение в sqlplus

Наконец нашел то, чего так не хватало в sqlplus'е - простой GPL'ный фрон енд - gqlplus:
- Навигация по истории команд;
- Редактор командной строки (правда все это есть в rlwrap);
- Автододополнении для имен таблиц и колонок (вот это действительно здорово).
Плюс ко всему этому имеются собранные deb и rpm пакеты.