¿Cómo puedo usar Oracle Preprocessor para tablas externas para consumir este tipo de formato?

StackOverflow https://stackoverflow.com/questions/1290520

Pregunta

Supongamos que tengo un formato de archivo personalizado, que puede ser análogo a las tablas N. Elegamos 3. Podría transformar el archivo, escribiendo un envoltorio de carga personalizado para completar 3 tablas de base de datos.

Pero supongamos que para las limitaciones de espacio y recursos, no puedo almacenar todo esto en el espacio de tabla.

¿Puedo usar Oracle Preprocessor para tablas externas para transformar el archivo personalizado de tres maneras diferentes?

Los ejemplos de uso que he leído dan un ejemplo a los archivos de texto GZIP'D. Pero esta es una relación uno a uno de archivo a la mesa, con solo una transformación.

Tengo un solo archivo con n posibles extracciones de datos.

  • ¿Tendría que definir n tablas externas, cada una referencia a un programa diferente?
  • Si mapeo tres tablas al mismo archivo, ¿cómo afectará esto el rendimiento? (El acceso es principalmente o todas las lecturas, pocas o ninguna escritura).

Además, ¿qué formato debe ser la salida estándar de mi preprocesador? ¿Debe ser CSV, o hay formas de configurar el controlador de tabla externa?

¿Fue útil?

Solución

"Si mapeo tres tablas en el mismo archivo, ¿cómo afectará esto el rendimiento? (El acceso es en su mayoría o todas las lecturas, pocas o ninguna escritura"

Debe haber poca o ninguna diferencia entre tres sesiones que accedan al mismo archivo a través de una definición de tabla externa o tres definiciones de tabla externas. Las tablas externas no se almacenan en caché por la base de datos (podría ser por el sistema de archivos o el disco), por lo que cualquier acceso es solo lecturas físicas. Dependiendo del programa de preprocesador, puede haber cierto nivel de serialización allí (o puede usar un programa de preprocesador para imponer serialización).

En cuanto al rendimiento, sería mejor para una sola sesión para escanear el archivo/tabla externo y cargarlo en una o más tablas de base de datos. Las otras sesiones lo leen desde allí y se almacena en caché en la SGA. Además, puede indexar una tabla de base de datos para que no tenga que leerlo todo.

Puede que pueda usar insertos múltiples Para cargar múltiples tablas de base de datos desde una sola definición de tabla externa en una sola pasada.

"¿Qué formato tiene que ser la salida estándar de mi preprocesador? ¿Debe ser CSV, o hay formas de configurar el controlador de tabla externa?"

Sigue más o menos el cargador SQL*, y ambos están en el Manual de servicios públicos. Puede usar formato fijo u otros delimitadores.

¿Tendría que definir n tablas externas, cada una referencia a un programa diferente?

Depende de cómo se entrelazen los datos. Ignorando los preprocesadores, puede tener diferentes tablas externas extrayendo diferentes columnas del mismo archivo o usar el Cargar cuando Cláusula para determinar qué registros incluir o excluir.

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