Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Problemas comparar tablas

Estas en el tema de Problemas comparar tablas en el foro de Oracle en Foros del Web. Saludos a todos. Me gustaria ver si me pueden ayudar con un problema que tengo con oracle. Sucede que me solicitaron crear los script para ...
  #1 (permalink)  
Antiguo 29/12/2009, 15:27
 
Fecha de Ingreso: diciembre-2009
Mensajes: 1
Antigüedad: 14 años, 3 meses
Puntos: 0
Problemas comparar tablas

Saludos a todos. Me gustaria ver si me pueden ayudar con un problema que tengo con oracle.
Sucede que me solicitaron crear los script para extraer tablas, vistas, procedimientos... todos los objetos de un esquema.
Eso ya esta y funciona.
El problema, es cuando en TOAD yo comparo 2 esquemas , uno el original y otro que fue el resultado de la extraccion, me detecta diferencias de tipos de datos.

Por ejemplo, campos que en el esquema 1 dice integer y mi extractor trajo como number.

El tema es que consulto la tabla USER_TAB_COLUMNS para extraer las columnas, y en ambos esquemas al ejecutar la Query me dice NUMBER, pero el TOAD, no se de donde extrae el script de la tabla y muestra integer.

Me pueden orientar que hacer? a que se debe que muestra esta diferencia?

Desde ya, muchas gracias por su ayuda.

Ahi esta la query para extraer las tablas, donde {TABLE_NAME} se reemplaza por el nombre la tabla.

Cita:
SELECT texto FROM (
SELECT 1 orden, 'CREATE ' || (CASE WHEN TEMPORARY = 'Y' THEN 'GLOBAL TEMPORARY' END) || ' TABLE '|| table_name || '(' texto FROM user_tables WHERE table_name = '{TABLE_NAME}'
UNION
SELECT
column_id+1 ORDEN ,
' '||RPad((CASE WHEN COLUMN_NAME = '''''' THEN '"''''"' ELSE COLUMN_NAME END), maxLong)
||' '|| RPAD(DATA_TYPE
|| ' ' || (CASE WHEN DATA_TYPE = 'VARCHAR2' OR DATA_TYPE = 'RAW' OR DATA_TYPE = 'VARCHAR' OR DATA_TYPE = 'CHAR' THEN '(' || DATA_LENGTH || ')'
ELSE CASE WHEN (DATA_TYPE = 'NUMBER' OR DATA_TYPE = 'FLOAT') AND DATA_PRECISION IS NOT NULL THEN '(' ||DATA_PRECISION|| CASE WHEN DATA_SCALE > 0 THEN ',' || DATA_SCALE END ||')' END END)
,20)|| ' ' || (CASE WHEN NULLABLE = 'N' THEN 'NOT NULL' END)
|| (CASE WHEN column_id != Count(COLUMN_NAME) over () THEN ',' ELSE '' END )
FROM USER_TAB_COLUMNS, (SELECT Max(Length(column_name))+1 maxLong FROM user_tab_columns WHERE table_name = '{TABLE_NAME}')
WHERE TABLE_NAME = '{TABLE_NAME}'
UNION
SELECT 1000 orden, ')' texto FROM dual
union
SELECT 1001 orden, '/' texto FROM dual
) ORDER BY orden
  #2 (permalink)  
Antiguo 28/01/2010, 09:28
 
Fecha de Ingreso: noviembre-2009
Mensajes: 4
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problemas comparar tablas

Hola!

No se que version de oracle estas utilizando pero para extraer ddl de objetos podes utilizar el package dbms_metadata
La funcion get_ddl te devuelve justamente la sentencia de creacion de tabla u otro objeto que tengas dentro de la base

Espero que te haya servido de ayuda
Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:20.