sql >> Database >  >> RDS >> Oracle

script dat gegevens ophaalt uit een txt-bestand in de where-clausule

Klinkt als een Oracle externe directory is perfect voor de baan. Houd er rekening mee dat deze aanpak veel problemen met zich meebrengt als dit een tekstbestand is waarnaar gebruikers kunnen schrijven. Gebruikers zullen honderd dingen doen die u nooit voor mogelijk had gehouden en die fouten zullen veroorzaken en meer .

Uit het artikel:

Maak een map

verlenen lezen, schrijven op directory data_dir naar uw_gebruiker;

Maak een externe tabel

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;

en lees dan van de tabel

SELECT *
    FROM   test_ext
    ORDER BY test_name;

Bewerken:u kunt dit nog steeds doen met directory's die zich niet op de databaseserver bevinden, maar er is meer werk voor nodig en dit vormt een nog groter risico voor de databasebeveiliging en gegevenskwaliteit. Deze aanpak schaalt ook niet. Bent u van plan om elke keer dat een nieuwe gebruiker wordt toegevoegd een nieuwe map toe te voegen?

Stappen om Oracle toegang te geven tot bestanden die zich op een andere computer bevinden (uitgaande van Windows-besturingssysteem)

  • maak een Windows- of domeingebruiker aan die leesrechten heeft voor elke map waartoe u toegang wilt hebben
  • voer op de databaseserver services.msc uit en wijzig de gebruiker waarop de Oracle-databaseservice wordt uitgevoerd in uw nieuwe domeingebruiker. Voeg deze gebruiker toe aan de lokale groep genaamd ORA_DBA op de databaseserver
  • start de database opnieuw om de wijzigingen door te voeren
  • maak een map in de database met een pad zoals //clientPc/sharedFolder
  • leesrechten verlenen aan uw databasegebruiker
  • op de clientcomputer leesrechten verlenen aan de domeingebruiker in die map
  • verifieer de connectiviteit door UTLFILE . te gebruiken een voorbeeldbestand lezen op de client-pc



  1. Hoe csv-datumformaat te converteren naar mysql db

  2. wat heeft het voor zin om arrays te serialiseren om ze in de db op te slaan?

  3. Een .sql -bestand uitvoeren in MySQL

  4. Datum vergelijken met sysdate in orakel