2016-04-26 3 views
0

Ich möchte alle Daten aus einer Datenbank wie Funktionen, Prozeduren, Ansichten, Auslöser, für die ein Benutzer Besitzer Privilegien hat exportieren. Ich weiß, dass SQL Developer die Option zum Exportieren von Datenbanken in SQL-Datei hat, aber ich möchte dies aus dem Code tun. Wenn ich den Code ausführe, möchte ich eine Datei mit der Erweiterung .sql erstellen, die alle Daten aus der Datenbank enthalten muss. Zuallererst möchte ich wissen, ob das möglich ist, und wenn dem so ist, kann mir jemand ein paar Hinweise dazu geben? begann ich eine Datei mit der Herstellung:PL/SQL-Skript für den Export der Datenbank

CREATE DIRECTORY test_dir AS 'H:\'; 

DECLARE 
    out_File UTL_FILE.FILE_TYPE; 
BEGIN 
    out_File := UTL_FILE.FOPEN('test_dir', 'test.sql' , 'W'); 
    UTL_FILE.PUT_LINE(out_file , 'here will be the database export'); 
    UTL_FILE.FCLOSE(out_file); 
END; 
+0

Zuerst versuchen Sie, eine Datei auf dem 'h: \' Laufwerk Ihres Clients oder auf dem 'h: \ Laufwerk des Servers zu erstellen? 'utl_file' kann nur in Dateien auf dem Datenbankserver schreiben. Läuft der Code? Erfüllt es, was Sie erwarten? Gibt es einen Fehler? Es ist sicherlich möglich, 'user_source' abzufragen,' dbms_metadata' aufzurufen, um alle gewünschten Informationen zu erhalten. Ich bin mir nicht sicher, was genau du fragst. –

+0

Ich versuche, alle Funktionen, Prozeduren, Ansichten, Trigger im Laufe der Zeit von mir in SQL-Entwickler in einer .SQL-Datei gesetzt..der Teil mit dem Erstellen von Verzeichnis und die Datei ist der Ausgangspunkt, lese ich einen Artikel im Web, aber es funktioniert nicht .. ich weiß wirklich nicht, wie man das in code..das ist, warum ich ein paar Hinweise suche – Caroso

+0

Was bedeutet "funktioniert nicht" für Sie? Erhalten Sie einen Fehler? Welcher Fehler? Wird die Datei nicht erstellt? Sind die Daten in der Datei nicht das, was Sie erwarten? Ist der Code, den Sie gepostet haben, in Ordnung, aber ein anderer Teil des Codes, der, sagen wir, den Prozedurcode nicht funktioniert? Warum möchten Sie Code schreiben, um zu replizieren, was SQL Developer bereits für Sie tut? –

Antwort

0

Die Oracle Export/Import-Dienstprogramme Export/Import von Datenbankobjekten im Benutzermodus (Verwendung BESITZER Parameter) unter Verwendung eines binären Dateiformat

http://docs.oracle.com/cd/B28359_01/server.111/b28319/exp_imp.htm

Wenn Sie jedoch exportieren möchten die Metadaten für Ihre Objekte und Daten in SQL-Dateien, können Sie Oracle Katalogbenutzer Ansichten wie user_objects -> für ein Benutzer-Datenbankobjekte user_tables -> Tabellen, user_constraints -> Einschränkungen (auch user_source, um Text für kompilierte Objekte zu erhalten) abfragen. Wenn Sie beabsichtigen, dass Ihre .sql-Dateien Objekte und Daten neu erstellen, ist ein erheblicher Aufwand erforderlich, insbesondere wenn Sie möchten, dass Ihre Skripts portabel sind. In diesem Fall würde ich Tools von Drittanbietern suchen.

0

Ich denke, das sollte die Antwort sein für das, was Sie suchen. Ich hoffe es hilft. Dies ist nur ein Beispiel für das, was Sie fragen. Andere Arten können auch nach Bedarf eingebaut werden.

spool on; 
spool <target path>/filename; 

SET SERVEROUTPUT ON SIZE UNLIMITED; 
BEGIN 
    FOR I IN 
    (SELECT al.* 
    FROM ALL_SOURCE al 
    WHERE OWNER = 'AVROY' 
    ORDER BY name, 
    line 
) 
    LOOP 
    dbms_output.put_line(I.TEXT); 
    END LOOP; 
    FOR I IN 
    (SELECT * FROM ALL_TABLES WHERE OWNER = 'AVROY' 
) 
    LOOP 
    BEGIN 
     dbms_output.put_line(dbms_metadata.get_ddl('TABLE',i.table_name,'AVROY')); 
    EXCEPTION 
    WHEN OTHERS THEN 
     NULL; 
    END; 
    END LOOP; 
END; 

SPOOL OFF; 
Verwandte Themen