Sql*loader

Hola estoy iniciando un proyecto en el cual debo poblar una base de datos con datos que se encuentran en un archivo de texto, mediante el sqlloader, mi problema es que no se como en el archivo de control se hace referencia a las llaves primarias y foráneas para definir las relaciones entre tablas es decir mira yo tengo la siguiente tupla en el archivo de texto
agoyan 34 calidad 2 14 febrero 2007
Y existen varias tuplas que pertenecen a agoyan y solo les diferencia la fecha yo no puedo ir insertando siempre en el campo nombre de central agoyan por que abría una redundancia lo que pienso es que debería que se yo preguntar si ese nombre ya existe en la tabla para ya no insertarlo, pero en cambio los otros campos tendría que relacinarlos,
no se si se puede realizar selects dentro del archivo de control y si es así podrías ayudarme con un ejemplo.
También como yo le digo al archivo de control el fin de un registro(tupla) en el archivo de texto.
Te agradecería cualquier ayuda gracias de antemano.

1 respuesta

Respuesta
1
Por lo que entiendo de tu pregunta, primero tienes que definir las los archivos con las estructuras más o menos parecidas a las tablas finales, para esto tienes dos opciones
- Lo procesas por fuera (si tienes unix con awk) generando tantos archivos como tablas finales.
- O lo cargas todo en una tabla temporal tal como está, y luego cargas las definitivas con SELCT INTO agrupando los datos.
Si quieres restringir datos lo puedes hacer definiendo PORQUE o índices sin duplicados, y mediante claves foráneas. Cuando no cumpla una tupla no la cargará. Estas quedarán en un archivo de error que tu le indiques. Esto enlentece el proceso de carga.
El fin de la tupla normalmente es el fin de línea, si tienes que indicarle el fin de campo (por ejemplo en Oracle es mediante FIELDS TERMINATED BY '#', si el archivo fuera separado por #)
Muchísimas gracias por tu ayuda, sabes ahora tengo otro dilema estoy trabajando con oracle 10g edición empresarial yo estuve leyendo sobre sqlloader, pero al momento que quiero entrar a la practica no se como ingresar al sqlloader para ejecutar los comandos, lo que hago es entrar al sqlplus que es una consola ejecuto sqlldr y me sale que no existe ese comando ahora yo no se si esta version no trae con sigo el sqlloader y si acaso lo tengo que instalar o por donde ingreso para poder crear el archivo de control. Me ayudarías muchísimo gracias
Gracias ahora surge la pregunta como creo una tabla temporal, ya que estuve leyendo y no hay tablas temporales en oracle y otra pregunta por fa puedes aclarrme algunas dudas que tengo con los table espace, mi dilema es que estoy confundida, es ¿Cuando yo creo una base de datos debo crear tablespaces una por tabla o una sola para todas las tablas, o no debo crear nada de tablespaces sino solo las tablas, por fa aclarame esta dudita que tengo gracias por todo
- Quise decir tabla "temporal" en tu sistema, para Oracle será una tabla común y corriente. Luego de que la utilices, si no te sirve más la eliminas.
- Comprueba que el cliente Oracle que tienes instalado esté el sqllrd. Párate sobre el directorio de oracle y busca programas que contengan sqlldr*. * (Debería tener un 10 en el nombre). Si no lo tienes, lo verás en el CD de instalación, ya que es probable que no lo se haya instalado. Personalmente siempre lo he utilizado desde UNIX (directo desde línea de comando)
- Una tabla, como cualquier objeto, siempre va sobre un tablespace, si no creas ninguno utilizarás el SYSTEM, lo cual no es recomendable. Por al menos crea un tablespace para tus tablas y otro para los índices. Para tablas grandes crea uno por tabla, de lo contrario puedes poner varias tablas en uno. Se recomienda dejar los índices en un tablespace diferente que el de la tabla.
Gracias por tu sugerencia sabes con respecto al tablespace se que debo crearlo con
create tablespace y lo demas ..... peero como le digo a ese tablespace que sea para la tabla estudiantes(por ejemplo), creo otro tablespace y como le digo que sea para la tabla facultades(por ejemplo), si inicialmente yo estoy con la cuenta de system y por defecto las tablas que yo crée se van al tablespace del system.
Otra duda que tengo es que estoy ingresando al sqlplus como usuario scott que viene al momento de instalar el oracle, tengo con este usuario los derechos de administrador o no, ya que cuando quiero ingresar como usuario system no me permite ingresar y yo al instalar le ubique una contraseña propia pero igual no medeja entrar, por lo que estoy trabajando como scott.
Mil disculpas si te parezco tan preguntona pero necesito aclarar todas estas dudas paro poder seguir te agradecería un montón,,,,,,, ten me paciencia plis gracias.
Es a la tabla que le tienes que indicar que va en determinado tablespace, ya que la tabla se almacena dentro de éste. Fíjate en la sentencia completa de la creación de la tabla.
Con el usuario scott no deberías de poder hacer mucho, se supone que no es administrador. Por las dudas prueba.
Trata de recuperar system, y luego te creas un nuevo usuario dueño para que sea el dueño de la base de datos, con privilegio para crear objetos, y trabajas con él.
Te agradezco que vayas cerrando las peguntas a medida que las vayamos cerrando los temas, y luego vas creando otras.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas