sql >> Databáze >  >> RDS >> Oracle

skript, který stahuje data ze souboru txt v klauzuli where

Zní to jako externí adresář Oracle je ideální pro práci. Mějte na paměti, že tento přístup je plný potíží, pokud se jedná o textový soubor, do kterého mohou uživatelé zapisovat. Uživatelé udělají sto věcí, o kterých jste nikdy nevěřili, že jsou možné a které způsobí chyby, a další .

Z článku:

Vytvořte adresář

udělit čtení, zapisovat do adresáře data_dir vašemu_uživateli;

Vytvořte externí tabulku

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;

a poté čtěte z tabulky

SELECT *
    FROM   test_ext
    ORDER BY test_name;

Edit:stále to můžete udělat s adresáři, které nejsou umístěny na databázovém serveru, ale je potřeba více práce, což představuje ještě větší riziko pro bezpečnost databáze a kvalitu dat. Tento přístup se také neškáluje. Máte v úmyslu přidat nový adresář pokaždé, když je přidán nový uživatel?

Kroky umožňující společnosti Oracle přístup k souborům umístěným na jiném počítači (za předpokladu operačního systému Windows)

  • vytvořte uživatele systému Windows nebo domény, který bude mít oprávnění ke čtení souborů v každém adresáři, ke kterému chcete přistupovat
  • na databázovém serveru spusťte services.msc a změňte uživatele, na kterém databázová služba Oracle běží, na nového uživatele domény. Přidejte tohoto uživatele do místní skupiny s názvem ORA_DBA na databázovém serveru
  • restartujte databázi, aby se změny projevily
  • vytvořte adresář v databázi pomocí cesty jako //clientPc/sharedFolder
  • udělte uživateli vaší databáze oprávnění ke čtení
  • na klientském počítači udělení oprávnění číst uživateli domény v této složce
  • ověření připojení pomocí UTLFILE k přečtení ukázkového souboru na klientském počítači



  1. Upozornění:mysql_real_escape_string():Přístup odepřen uživateli ''@'localhost' (s použitím hesla:NE)

  2. Připojte se k místnímu serveru MySQL bez sudo

  3. xx time ago funkce nefunguje

  4. Doba stahování souboru v PHP/MySQL