martes, 3 de julio de 2007

Importar datos de excel o de access a oracle: sql loader



En el siguiente post explico cómo pasar de excel a oracle o de access a oracle.

De Excel a Access:

El objetivo es convertir la hoja excel en una tabla access. Podemos realizarlo de alguna de estas dos formas:
a) Abrimos Access e importamos la hoja de excel: Archivo/ importar. Se nos creará una tabla con los datos de la hoja importada
b) Abrimos Access e importamos la hoja excel como una tabla.Para ello en la parte donde se ven las tablas, con el botón derecho le damos a importar. Se creara una tabla con el contenido de la hoja excel.


De Access a Oracle:

1) Antes de exportar una tabla vamos a convertir sus campos:
Pulsamos sobre la tabla que queremos exportar con el botón derecho y seleccionamos "Vista Diseño". Todos los campos debemos convertirlos a tipo de dato texto. Si no lo hacemos es probable que tengamos problemas en la importación con el sqlloader

2)
Exportamos la tabla. Pulsamos con el botón derecho sobre la tabla, y seleccionamos exportar. En "guardar como tipo" seleccionamos "Archivo de texto" y pulsamos exportar. Podemos guardarlo donde queramos, por ejemplo  en el escritorio de windows (C:\Users\dieguz2\Desktop\archivo.csv)

3)
En el asistente seleccionamos: "Delimitado"; como delimitador que separa los campos, en "otro" ponemos | ; no marcamos "incluir nombres de campo en la primera fila"; cualificador de texto las comillas " . Pulsamos siguiente y luego finalizar

4) Abrimos el archivo que hemos exportado y añadimos lo siguiente al comienzo del archivo:
LOAD DATA
INFILE *
INTO TABLE "NOMBRE_DE_TABLA"
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED '"'
TRAILING NULLCOLS
(CAMPO1, CAMPO2)
begindata


El nombre de tabla y los campos tienen que estar en MAYÚSCULAS. La tabla ha de estar creada previamente y estar vacía.

5)
Ejecutamos el sql loader desde el mismo directorio donde hemos guardado el archivo csv o bien ponemos la ruta completa para llegar al archivo ( ej1(windows): control=C:\Users\dieguz\Desktop\archivo.csv   ej2(linux): control=/windows/C/Users/dieguz/Desktop/archivo.csv).
sqlldr usuario/contraseña@instancia control=archivo.csv
Notas extra:

Si queremos que el texto se importe en formato unicode deberemos hacer lo siguiente:
http://dieguz2.blogspot.com/2008/09/sqlloader-unicode-utf8.html


2 comentarios:

Catany24 dijo...

Buen articulo, el archivo que se genera de access, donde lo debo guardar para que lo reconozca la sentencia? o es que lo reconoce ella sola y no necesita marcar la ruta del archivo y solo el nombre con la extension son suficientes?

Agradeceria una respuesta a mi duda.

Diego dijo...

Puedes guardarlo donde quieras. En el ejemplo de arriba lo guardo en el escritorio.

Sólo tienes que asegurate que en la línea:
sqlldr usuario/contraseña@instancia control=archivo.csv

Esté la ruta completa hasta el archivo. ej:

sqlldr usuario/contraseña@instancia control=C:\Users\dieguz\Desktop\archivo.csv