sql >> Databasteknik >  >> RDS >> Oracle

skript som hämtar data från en txt-fil i where-satsen

Låter som en Extern Oracle-katalog är perfekt för jobbet. Tänk på att detta tillvägagångssätt är fyllt med svårigheter om det här är en textfil som användare kan skriva till. Användare kommer att göra hundra saker som du aldrig trodde var möjliga som kommer att orsaka fel och mer .

Från artikeln:

Skapa en katalog

bevilja läsning, skriv i katalogen data_dir till din_användare;

Skapa en extern tabell

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;

och läs sedan från tabellen

SELECT *
    FROM   test_ext
    ORDER BY test_name;

Redigera:du kan fortfarande göra detta med kataloger som inte finns på databasservern men mer arbete krävs och detta utgör en ännu större risk för databassäkerhet och datakvalitet. Det här tillvägagångssättet skalas inte heller. Har du för avsikt att lägga till en ny katalog varje gång en ny användare läggs till?

Steg för att tillåta Oracle att komma åt filer som finns på en annan dator (förutsatt att Windows operativsystem)

  • skapa en Windows- eller domänanvändare som kommer att ha läsbehörighet för varje katalog som du vill komma åt
  • på databasservern kör services.msc och ändra användaren som Oracle-databastjänsten körs på till din nya domänanvändare. Lägg till denna användare i den lokala gruppen som heter ORA_DBA på databasservern
  • Starta om databasen för att ändringarna ska träda i kraft
  • skapa en katalog i databasen med en sökväg som //clientPc/sharedFolder
  • ge läsbehörigheter till din databasanvändare
  • på klientdatorn bevilja läsning till domänanvändaren på den mappen
  • verifiera anslutningen genom att använda UTLFILE för att läsa en exempelfil på klientdatorn



  1. Error sql:Konverteringen av en varchar-datatyp till en datetime-datatyp resulterade i ett värde utanför intervallet

  2. Är filen my.ini på fel plats?

  3. SKAPA DATABAS inuti transaktionen

  4. Returnera flera rader på en enda post