2009-10-14 19 views

Respuesta

3

usar el paquete dbms_metadata, tal como se describe here

20

Si quieres ver DDL para los objetos, puede utilizar

select dbms_metadata.get_ddl('OBJECT_TYPE','OBJECT_NAME','OBJECT_OWNER') 
    from dual 
/

Por ejemplo, esto le dará la secuencia de comandos DDL para emp mesa.

select dbms_metadata.get_ddl('TABLE','EMP','HR') 
    from dual 
/

Es posible que necesite ajustar el formato de long tipo de número grande. Para los paquetes, necesita acceder a las tablas dba_source, user_source, all_source. Puede consultar el nombre y tipo de objeto para ver qué código está almacenado.

+2

El largo referido aquí es algo como esto. "establecer largas 200000 páginas 0 líneas 131" – Nap

1

La respuesta básica parece ser 'utilizar el paquete dbms_metadata'. La pregunta axuilar es:

Pero, ¿qué sucede si quiero generar un script para todas las tablas a la vez?

Y la respuesta es, presumiblemente, para interrogar el catálogo del sistema para los nombres y los propietarios de todas las tablas:

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

No estoy lo suficientemente familiarizado con Oracle para conocer el catálogo del sistema. En Informix, lo que sí sé, suponiendo que no era un procedimiento dbms_metadata.get_ddl, la consulta sería:

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

en Informix, tabids menos de 100 están reservados para el catálogo del sistema, y ​​no mesas (vistas, sinónimos , secuencias y algunas otras cosas esotéricas) se excluyen al requerir el 'tabtype' correcto.

4

En Oracle, la ubicación que contiene información sobre todos los objetos de la base de datos, incluidas las tablas y los procedimientos almacenados, se denomina Diccionario de datos. Es una colección de vistas que le proporciona acceso a los metadatos que definen la base de datos. Puede consultar las vistas del diccionario de datos para obtener una lista de objetos de base de datos deseados y luego usar las funciones disponibles en el paquete dbms_metadata para obtener el DDL para cada objeto. La alternativa es investigar el soporte en dbms_metadata para exportar DDL para una colección de objetos.

Para algunos indicadores, por ejemplo, para obtener una lista de tablas que puede utilizar el siguiente Diccionario información Vistas de

  • user_tables contiene todas las tablas propiedad del usuario
  • all_tables contiene todas las tablas que son accesibles por el usuario
  • y así sucesivamente ...
49
+0

Esto es exactamente lo que estaba buscando, así que gracias – Asaf

+0

Si tienes una larga lista de java sp que normalmente no quieres escribir de esta manera es una pesadilla. –

+0

¿Qué quieres decir con "sp"? –

1

Oracle SQL Developer> Ver> DBA> Seleccione su conexión> Ampliar> Seguridad> Usuarios> clic derecho sobre el usuario> Crear como> rellene los campos> Copiar secuencia de comandos SQL> Cerrar

Si su el usuario tiene privilegios de objetos, haga esto también

Oracle SQL Developer> Ver> DBA> Seleccione su conexión> Amplíe> Seguridad> Usuarios> Haga doble clic en su usuario> Privs de objetos> Seleccione todos los datos> Haga clic con el botón derecho> Exportar> Exportar como archivo de texto

Edite ese archivo de texto para otorgar privilegios de objeto a su usuario.

8

Esto funcionó para mí:

  • En SQL Developer, haga clic derecho en el objeto que desea generar un guión. es decir, el nombre de la tabla
  • Seleccionar DLL rápido> Guardar en archivo
  • Esto escribirá la sentencia create en un archivo sql externo.

Tenga en cuenta que también puede resaltar varios objetos al mismo tiempo, por lo que podría generar un script que contenga instrucciones de creación para todas las tablas dentro de la base de datos.

+0

Buena respuesta. Una pequeña aclaración. Al menos en la versión actual de SQL Developer, si seleccionas varios procedimientos almacenados y haces el 'Quick DDL', no obtendrás el cuerpo del SP. Para lograrlo, debe abrir varios procedimientos almacenados para poder ver la parte del árbol que hace referencia al cuerpo y seleccionar un número de ellos y luego hacer un 'DDL rápido'. Gracias por la respuesta, justo lo que estaba buscando. – glaucon

0

Esto funcionó para mí:

PL SQL Developer -> Herramientas -> Exportar usuario Objetos

Seleccione las casillas de verificación: Incluir privilegios e incluyen almacenamiento de

Seleccione el nombre de archivo. Hit exportar

Más adelante puede usar el archivo de exportación generado para crear la tabla en otro esquema.

+1

SQL Developer y PL/SQL Developer son diferentes programas. –

+0

funcionó para PL SQL Developer. –

0

paso 1. select * from <tablename>;

paso 2. simplemente haga clic derecho en su salida (es decir, datos), luego vaya a la última opción exportar, le dará alguna extensión, luego haga clic en la extensión requerida y luego aplique obtendrá un nuevo archivo que incluye datos.

Cuestiones relacionadas