Oracle
 sql >> Base de données >  >> RDS >> Oracle

script qui extrait les données d'un fichier txt dans la clause where

Cela ressemble à un répertoire externe Oracle est parfait pour le travail. Gardez à l'esprit que cette approche est semée d'embûches s'il s'agit d'un fichier texte dans lequel les utilisateurs peuvent écrire. Les utilisateurs feront une centaine de choses que vous n'auriez jamais cru possibles qui causeront des erreurs et plus .

Extrait de l'article :

Créer un répertoire

accordez la lecture, écrivez sur le répertoire data_dir à votre_utilisateur ;

Créer une table externe

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;

puis lire à partir du tableau

SELECT *
    FROM   test_ext
    ORDER BY test_name;

Modifier :vous pouvez toujours le faire avec des répertoires qui ne se trouvent pas sur le serveur de base de données, mais plus de travail est nécessaire et cela représente un risque encore plus grand pour la sécurité de la base de données et la qualité des données. Cette approche n'est pas non plus évolutive. Avez-vous l'intention d'ajouter un nouvel annuaire chaque fois qu'un nouvel utilisateur est ajouté ?

Étapes pour autoriser Oracle à accéder aux fichiers situés sur une autre machine (en supposant que le système d'exploitation Windows)

  • créez un utilisateur Windows ou de domaine qui aura des autorisations de lecture de fichiers sur chaque répertoire auquel vous souhaitez accéder
  • sur le serveur de base de données, exécutez services.msc et remplacez l'utilisateur sur lequel le service de base de données Oracle s'exécute par votre nouvel utilisateur de domaine. Ajoutez cet utilisateur au groupe local appelé ORA_DBA sur le serveur de base de données
  • redémarrez la base de données pour que les modifications prennent effet
  • créer un répertoire dans la base de données en utilisant un chemin comme //clientPc/sharedFolder
  • accorder des autorisations de lecture à l'utilisateur de votre base de données
  • sur la machine cliente, accordez la lecture à l'utilisateur du domaine sur ce dossier
  • vérifier la connectivité en utilisant UTLFILE pour lire un exemple de fichier sur le pc client