Pl/SQL

Necesito un ejemplo de un script de PL/SQL, que haga los siguiente: que habrá un archivo de dato y luego introduzca el contenido de este archivo en una tabla.
Nota: el archivo y la bases de datos esta bajo UNIX.

1 respuesta

Respuesta
1
Lo que necesitas es utilizar el Sql Loader.
Puedes visitar los siguientes links.
http://examples.oreilly.com/orsqlloader/
Más ejemplos de sqlloader lo encuentras en:
El el directorio :
ORACLE_HOME\RDBMS\demo\ulcase1.ctl
ORACLE_HOME\RDBMS\demo\ulcase2.ctl
ORACLE_HOME\RDBMS\demo\ulcase3.ctl
ORACLE_HOME\RDBMS\demo\ulcase4.ctl
ORACLE_HOME\RDBMS\demo\ulcase5.ctl
ORACLE_HOME\RDBMS\demo\ulcase6.ctl
ORACLE_HOME\RDBMS\demo\ulcase7.ctl
ORACLE_HOME\RDBMS\demo\ulcase8.ctl
ORACLE_HOME\RDBMS\demo\ulcase9.ctl
ORACLE_HOME\RDBMS\demo\ulcase10.ctl
Saludos.
Diego.
Pd. Si la información es safistactoria no se olvide de cerrar la pregunta, de lo contrario sigamos conversando.
Este era el script que yo tenia cuando el archivo y la BD estaba bajo Windows ahora los tengo bajo Unix
script
CREATE OR REPLACE PROCEDURE pro_Tipo_Id AS
file utl_file.FILE_TYPE;
file_name VARCHAR2(40);
linea_leida VARCHAR2(35);
BEGIN
DELETE FROM TIPO_ID;
file_name := 'Tipo_Id.dat';
file := utl_file.FOPEN('c:\oracle\',file_name,'r');
LOOP
BEGIN
utl_file.GET_LINE (file,linea_leida);
INSERT INTO TIPO_ID (COD_TIPO_ID, DESC_TIPO_ID) VALUES(SUBSTR(linea_leida,1,1), SUBSTR(linea_leida,3,30));
END;
END LOOP;
commit;
utl_file.FCLOSE (file);
END;
/
Buen caso ... este procedure puede funcionar igual en Unix, lo único que debes variar es la ruta donde esta ubicado el archivo, teniendo especial cuidado en mayúsculas y minúsculas.
ASimismo, deberías probar que el usuario tenga acceso a la ruta especificada (me imagino que unix validará al usuario Oracle, quien es propietario de los objetos de unix).
Finalmente, para ejecutarlo simplemente invocas desde sqlplus al stored procedure con la clausula execute.
Ejemplo:
SQL> EXECUTE pro_tipo_id;
O lo llamas desde otro paquete de PL/SQL.
Ya probé dando la dirección especifica, pero no funciona el error que manda dice que no existe el path, pero yo estoy dando la dirección correcta
Me ha llegado una nueva pregunta, pero aparentemente el website no se ha actualizado. No puedo verla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas