Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Skript, das Daten aus einer txt-Datei in der where-Klausel abruft

Klingt wie ein Externes Oracle-Verzeichnis ist perfekt für den Job. Denken Sie daran, dass dieser Ansatz mit Schwierigkeiten verbunden ist, wenn es sich um eine Textdatei handelt, in die Benutzer schreiben können. Benutzer werden hundert Dinge tun, die Sie nie für möglich gehalten hätten, die Fehler verursachen und mehr .

Aus dem Artikel:

Erstellen Sie ein Verzeichnis

gewähren Sie Ihrem_Benutzer Lese- und Schreibzugriff auf das Verzeichnis data_dir;

Erstellen Sie eine externe Tabelle

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;

und dann aus der Tabelle lesen

SELECT *
    FROM   test_ext
    ORDER BY test_name;

Bearbeiten:Sie können dies immer noch mit Verzeichnissen tun, die sich nicht auf dem Datenbankserver befinden, aber es ist mehr Arbeit erforderlich, und dies stellt ein noch größeres Risiko für die Datenbanksicherheit und Datenqualität dar. Dieser Ansatz skaliert auch nicht. Beabsichtigen Sie, jedes Mal, wenn ein neuer Benutzer hinzugefügt wird, ein neues Verzeichnis hinzuzufügen?

Schritte, um Oracle den Zugriff auf Dateien zu ermöglichen, die sich auf einem anderen Computer befinden (unter der Annahme eines Windows-Betriebssystems)

  • Erstellen Sie einen Windows- oder Domänenbenutzer, der Dateileseberechtigungen für jedes Verzeichnis hat, auf das Sie zugreifen möchten
  • Führen Sie auf dem Datenbankserver services.msc aus und ändern Sie den Benutzer, auf dem der Oracle-Datenbankdienst ausgeführt wird, in Ihren neuen Domänenbenutzer. Fügen Sie diesen Benutzer der lokalen Gruppe namens ORA_DBA auf dem Datenbankserver hinzu
  • Starten Sie die Datenbank neu, damit die Änderungen wirksam werden
  • erstellen Sie ein Verzeichnis in der Datenbank mit einem Pfad wie //clientPc/sharedFolder
  • Erteilen Sie Ihrem Datenbankbenutzer Leseberechtigungen
  • Erteilen Sie auf dem Client-Rechner dem Domänenbenutzer Leserechte für diesen Ordner
  • Überprüfen Sie die Konnektivität durch die Verwendung von UTLFILE um eine Beispieldatei auf dem Client-PC zu lesen