2016-07-26 4 views
0

Ich bin auf der Suche nach einer Lösung zum Erstellen der SQL-INSERT-Anweisungen mit PL/SQL-Skript für die Select-Anweisung Ergebnismenge. Suchen Sie nach ähnlichen Funktionen, die im SQL Developer Tool verfügbar sind (Export -> Format einfügen), aber ich möchte die Lösung als Skript und nicht als Werkzeug verwenden.Oracle: Exportieren Select-Anweisung Ergebnismenge als INSERT SQL-Anweisungen ähnlich wie SQL-Entwickler Export

Ich habe die folgende Lösung bezeichnet. Ich würde jedoch gerne wissen, ob es einen besseren Weg gibt, dies zu tun, da die Lösung alt und nicht sehr einfach ist.

EXPORT AS INSERT STATEMENTS: But in SQL Plus the line overrides 2500 characters!

Antwort

0

Ich fand nur eine einfache Lösung für mein Problem mit Oracle Hinweis ("Einfügen"). Damit wird automatisch auch der Datentyp berücksichtigt. Meine Tabelle hat nur String- und numerische Datentypen, also funktioniert es gut für mich. Ich habe die Lösung nicht für andere Datentypen getestet. Ich hoffe jedoch, dass es auch für andere Datentypen funktionieren würde.

set linesize 2000 
set pagesize 10 
spool "c:\myoutput.txt"; 
select /*insert*/ * from SAMPLE_TABLE; 
spool off; 
+0

Mit welchem ​​Werkzeug funktioniert das? –

0

Nicht wirklich PL/SQL, aber grundlegende SQL kann eine Anfrage so einfach wie diese handhaben:

set linesize 2000 
set pagesize 0 
spool c:\myoutput.txt 
select 'INSERT INTO SAMPLE_TABLE VALUES ('''|| 
    C01||''','||C02||','||C03||','||C04||','''||C05||''','''|| 
    C06||''','''||C07||''','||C08||','||C09||','''||C10||''','''|| 
    C10||''','''||C11||''','''||C12||''','''||C13||''','''||C14||''','''|| 
    C15||''','''||C16||''');' 
from sample_table; 
spool off 

Hinweis: Dies wird anhand der Tabelle Beispiel aus der URL, die Sie in Ihrem Beitrag verwiesen . Im Beispiel in der URL, C02, C03, C04, C08 und C09 sind alle NUMBER, der Rest CHAR oder VARCHAR2

+0

Vielen Dank! Tatsächlich berücksichtigt das Skript den Datentyp nicht. – notionquest

+0

Ich bin nicht klar, was du meinst. Sie müssen den Datentyp berücksichtigen? Unter der Annahme, dass die DDL für diese Tabelle sowohl in der Quelle als auch im Ziel identisch ist, sollte der Datentyp kein Problem darstellen, da alle Felder in der Quellkopie der Tabelle bereits die erforderlichen Einschränkungen erfüllen. Vielleicht lese ich das völlig falsch, vergib mir, wenn das so ist! – fleetmack

+0

Beispiel: Wenn der Zeichenfolgenwert in der Spalte Leerzeichen enthält, würde das Einfügescript nicht funktionieren, wenn es nicht in einfache Anführungszeichen eingeschlossen ist. – notionquest

2

als Skript Sie sagen ...

Verwenden SQLcl - es ist ein Kommando- Zeilenschnittstelle für SQL Developer.

Sie können ein .bat- oder .sh-Skript erstellen, um SQLcl zu starten, Ihre Abfrage auszuführen, es in eine Datei zu spoolen und keinen Code zu schreiben.

set pagesize... 
set head... 
set feedback... 
spool... 

set sqlformat insert 
select * from sample_table; 
spool off 
exit 

uses the same code as SQL Developer to generate the INSERTs, only avail from a CLI/script

Verwandte Themen