sql >> Base de Datos >  >> RDS >> Oracle

script que extrae datos de un archivo txt en la cláusula where

Suena como un directorio externo de Oracle es perfecto para el trabajo. Tenga en cuenta que este enfoque está plagado de dificultades si se trata de un archivo de texto en el que los usuarios pueden escribir. Los usuarios harán cientos de cosas que nunca creíste posibles que causarán errores y más .

Del artículo:

Crear un directorio

otorgar lectura, escritura en el directorio data_dir a your_user;

Crear una tabla externa

CREATE TABLE test_ext (
  test_code      VARCHAR2(5),
  test_name      VARCHAR2(50)
)
ORGANIZATION EXTERNAL (
  TYPE ORACLE_LOADER
  DEFAULT DIRECTORY ext_tab_data
  ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE
    FIELDS TERMINATED BY ','
    MISSING FIELD VALUES ARE NULL
    (
      test_code      CHAR(5),
      test_name      CHAR(50)
    )
  )
  LOCATION ('test1.txt','test2.txt')
)
PARALLEL 5
REJECT LIMIT UNLIMITED;

y luego leer de la tabla

SELECT *
    FROM   test_ext
    ORDER BY test_name;

Editar:aún puede hacer esto con directorios que no están ubicados en el servidor de la base de datos, pero se requiere más trabajo y esto representa un riesgo aún mayor para la seguridad de la base de datos y la calidad de los datos. Este enfoque tampoco escala. ¿Tiene la intención de agregar un nuevo directorio cada vez que se agrega un nuevo usuario?

Pasos para permitir que Oracle acceda a los archivos ubicados en otra máquina (asumiendo el sistema operativo Windows)

  • cree un usuario de Windows o de dominio que tendrá permisos de lectura de archivos en cada directorio al que desee acceder
  • en el servidor de la base de datos, ejecute services.msc y cambie el usuario en el que se ejecuta el servicio de la base de datos de Oracle al nuevo usuario de dominio. Agregue este usuario al grupo local llamado ORA_DBA en el servidor de la base de datos
  • reinicie la base de datos para que los cambios surtan efecto
  • crear un directorio en la base de datos usando una ruta como //clientPc/sharedFolder
  • otorgue permisos de lectura a su usuario de base de datos
  • en la máquina cliente, conceda la lectura al usuario del dominio en esa carpeta
  • verificar la conectividad usando UTLFILE para leer un archivo de muestra en la PC del cliente