Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

script que extrai dados de um arquivo txt na cláusula where


Parece um diretório externo do Oracle é perfeito para o trabalho. Tenha em mente que esta abordagem está repleta de dificuldades se este for um arquivo de texto no qual os usuários podem escrever. Os usuários farão centenas de coisas que você nunca acreditou ser possível que causarão erros e mais .

Do artigo:

Crie um diretório

conceder leitura, gravação no diretório data_dir para your_user;

Criar uma tabela 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;

e depois leia da tabela
SELECT *
    FROM   test_ext
    ORDER BY test_name;

Edit:você ainda pode fazer isso com diretórios que não estão localizados no servidor de banco de dados, mas é necessário mais trabalho e isso representa um risco ainda maior para a segurança do banco de dados e a qualidade dos dados. Essa abordagem também não é dimensionada. Você pretende adicionar um novo diretório sempre que um novo usuário for adicionado?

Etapas para permitir que o Oracle acesse arquivos localizados em outra máquina (assumindo o sistema operacional Windows)
  • crie um usuário do Windows ou do domínio que terá permissões de leitura de arquivo em todos os diretórios que você deseja acessar
  • no servidor de banco de dados, execute services.msc e altere o usuário no qual o serviço de banco de dados Oracle é executado para o novo usuário de domínio. Adicione este usuário ao grupo local chamado ORA_DBA no servidor de banco de dados
  • reinicie o banco de dados para que as alterações tenham efeito
  • crie um diretório no banco de dados usando um caminho como //clientPc/sharedFolder
  • conceda permissões de leitura ao usuário do banco de dados
  • na máquina cliente, conceda leitura ao usuário do domínio nessa pasta
  • verifique a conectividade usando UTLFILE para ler um arquivo de amostra no PC cliente