Pregunta

Tengo un gran archivo de datos (multi-GB) exportado de una tabla de Oracle. Quiero importar estos datos en otra instancia de Oracle, pero quiero que el nombre de la tabla a ser diferente de la tabla original. es posible? ¿Cómo?

Los dos sistemas de importación y exportación son Oracle 11g. La tabla incluye una columna BLOB, si esto hace alguna diferencia.

Gracias!

Actualizaciones

La idea era actualizar una tabla mientras se mantiene el tiempo de inactividad en el sistema que lo está usando a un mínimo. La solución (basado en la respuesta Vicente Malgrat 's y de APC actualización) es:

  1. Asumiendo nuestro nombre de la tabla se A
  2. Hacer un esquema TEMP_SCHEMA temp
  3. Importar nuestros datos en TEMP_SCHEMA.A
  4. CREATE REAL_SCHEMA.B AS SELECT * FROM TEMP_SCHEMA.A
  5. DROP TABLE REAL_SCHEMA.A Cambiar nombre REAL_SCHEMA.A a REAL_SCHEMA.A_OLD
  6. Cambiar nombre REAL_SCHEMA.B a REAL_SCHEMA.A
  7. DROP REAL_SCHEMA.A_OLD

De esta manera, el tiempo de inactividad es sólo durante los pasos 4 y 5, ambos deben ser independientes de tamaño de los datos. Voy a publicar una actualización aquí si esto no funciona: -)

¿Fue útil?

Solución

supongo que desea importar la tabla en un esquema en el que ya se está utilizando el nombre. Creo que no se puede cambiar el nombre de la tabla durante la importación. Sin embargo, puede cambiar el esquema con la opción FROMUSER y TOUSER. Esto le permitirá importar la tabla en otro esquema (temporal).

Cuando se hace copia de la tabla de esquema de destino con un CREATE TABLE AS SELECT. El tiempo que se necesita para copiar la tabla será insignificante en comparación con la importación para que esto no perder demasiado tiempo. Usted necesitará dos veces el espacio de disco, aunque durante la operación.

Actualizar

Según lo sugerido por Gary un método más inteligente sería la creación de una vista o sinónimo en el esquema temporal que hace referencia a la nueva tabla en el esquema de destino. Usted no tendrá que copiar los datos después de la importación, ya que pasará a través de directamente a la tabla de destino.

Otros consejos

Si está utilizando los antiguos servicios públicos EXP IMP y no se puede hacer esto. La única opción es importar en una tabla del mismo nombre (aunque se podría cambiar el esquema que posee la tabla.

Sin embargo, se dice que está en 11g. ¿Por qué no utilizar la utilidad DataPump introducido en 10g, que sustituye a la importación y la exportación. Debido a que en 11g de que la utilidad ofrece la opción REMAP_TABLE que hace exactamente lo que quiere.

editar

Después de leer los comentarios del PO añadido a otra respuesta mientras estaba escribiendo esto, no creo que la opción REMAP_TABLE trabajará en su caso. Sólo cambia el nombre de los nuevos objetos. Si una tabla con el nombre original existe en el esquema de destino de la importación falla con ORA-39151. Lo sentimos.

editar bis

Dada la solución de la OP finalmente eligió (gota tabla existente, sustituya por la nueva tabla) hay una solución con bomba de los datos, que es el uso de la cláusula TABLE_EXISTS_ACTION={TRUNCATE | REPLACE}. La elección de REPLACE elimina la tabla mientras que TRUNCATE simplemente, er, lo trunca. En cualquier caso hay que preocuparse por las restricciones de integridad referencial, sino que también es un problema con la solución elegida.

he puesto esta adición no fuera por la OP, sino para el beneficio de otros solicitantes que se encuentran esta página algún momento en el futuro.

Utilice la opción REMAP_TABLE = EXISITNG_TABLE_NAME: NEW_TABLE_NAME en impdp. Esto funciona en 11gR2.

Sólo tiene que importar en una tabla con el mismo nombre, a continuación, cambiar el nombre de la tabla.

Crea una vista como select * from ... la tabla que desea importar en, con la opinión de que coincida con el nombre de la tabla en la exportación. No haga caso de errores en la importación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top