Oracle - Importar Datos desde un pc en red(carpeta compartida) a BD de Oracle

 
Vista:
Imágen de perfil de Juan Carlos
Val: 1
Ha aumentado su posición en 30 puestos en Oracle (en relación al último mes)
Gráfica de Oracle

Importar Datos desde un pc en red(carpeta compartida) a BD de Oracle

Publicado por Juan Carlos (1 intervención) el 04/04/2018 21:30:17
Buen dia


Tengo un proyecto en el que necesito agregar unos registros a una TABLA_X ami base de datos por me dio de codigo PL/SQL actualmente lo tengo funcionando con la creación de una tabla temporal con Organization external que llena con la información que se encuentra dentro de un csv. esta parte esta terminada y es funcional de manera local.


cuando trato de hacer que el codigo tome el archivo .csv de una carpeta compartida, me muestra error:

1
2
3
4
5
6
7
8
Conectando a la base de datos BD_LOCAL.
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
error opening file L:\Carpeta_archivos\TEMP_2916_9504.log
ORA-06512: at "DMGI.EE_DIA_LOCAL", line 34
ORA-06512: at line 2
El proceso ha terminado.
Desconectando de la base de datos BD_LOCAL_DMGI.

BD_LOCAL = el nombre de mi base de datos.
DMGI = el esquema-Usuario con permisos suficientes.
EE_DIA_LOCAL = es el procedimiento con el codigo PL/SQL:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
create or replace PROCEDURE EE_DIA_LOCAL
AS
Q1 varchar2(4000);
Q2 varchar2(4000);
FILENAME varchar2(4000) :='EE_DIA.csv';
BEGIN
Q1:='CREATE TABLE TEMP
(
 FECHA varchar2(30),
 PAIS varchar2(30),
 ENER_INICIAL number(8),
 TEMP_MIN number(8,2),
 TEMP_MAX number(8,2),
 TEMP_PROM number(8,2)
)
ORGANIZATION EXTERNAL
(
  TYPE ORACLE_LOADER
  DEFAULT DIRECTORY NETUSE
  ACCESS PARAMETERS
  (
    RECORDS DELIMITED BY NEWLINE skip 1
    CHARACTERSET WE8MSWIN1252
    FIELDS TERMINATED BY '';'' OPTIONALLY ENCLOSED BY ''"''
    missing FIELD VALUES are NULL
  )
  LOCATION (''' || FILENAME || ''')
)';
Q2:='INSERT INTO TABLA_X (FECHA, PAIS, ENER_INICIAL, ENER_REPORTE, TEMP_MIN, TEMP_MAX, TEMP_PROM)
SELECT FECHA, PAIS, ENER_INICIAL, ENER_INICIAL, TEMP_MIN, TEMP_MAX, TEMP_PROM FROM TEMP';
 
EXECUTE IMMEDIATE 'DROP TABLE TEMP';
EXECUTE IMMEDIATE Q1;
EXECUTE IMMEDIATE Q2;
 
  NULL;
END;

TABLA_X = tabla a la que tengo que pasar lo que se cargar en el TEMP(tabla temporal)

NETUSE = es el directorio que creé en Oracle para conectarme a la carpeta compartida donde se encuentra el archivo que tengo que insertar se conecta por medio de una conexión creada en net use para hacer todo mas simplificado.

He probado de diferentes maneras, y según puedo suponer tiene que ver con credenciales o permisos que se tienen para entrar esa carpeta ya que al hacer esa carpeta compartida publica, si se ejecuta el código de manera normal.

pero necesito que se haga de alguna forma ya que al verdadero servidor donde quedara el archivo a tomar, no tendrá la carpeta compartida publica, he buscado pero no si se me esta escapando algo.

Espero me haya podido hacer entender con mi situación, gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder