Können Variablen übergeben werden, die eine SQL*Loader control-Datei?
Angenommen, Sie haben eine Tabelle:
CREATE TABLE Customer
(
batch_id NUMBER,
customer_name VARCHAR2(20),
customer_address VARCHAR2(100)
)
Und angenommen, Sie haben eine control-Datei zum ausfüllen dieser Tabelle:
LOAD DATA INFILE 'Kunden.dat' ERSETZEN IN TABELLE Kunden ( batch_id ??????, customer_name POSITION(001:020), customer_address POSITION(021:120) )
Ist es möglich, übergeben Sie den Wert für batch_id
um meine Steuern Datei wenn ich mit SQL*Loader? Zum Beispiel ist es möglich, an eine variable binden (drehen Sie die Fragezeichen in :MY_AWESOME_BATCH_ID
)?
InformationsquelleAutor Adam Paynter | 2010-09-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine relativ einfache Art archivieren, erstellen Sie eine gespeicherte Funktion, die zurückgibt, die batch-Nummer und verwenden Sie es in der loader-Datei.
Sie könnte auch entscheiden, neu erstellen die Funktion " on-the-fly in ein Skript vor dem Start, sqlloader.
InformationsquelleAutor Erich Kitzmueller
Nicht leicht, wenn ich mich Recht erinnere, aber hier sind ein paar alternativen:
InformationsquelleAutor Jim Hudson
Wenn es akzeptabel ist zu haben BATCH_ID Werte automatisch erzeugt durch Inkrementieren auf jeder laden, als dieser arbeitete für mich. Im 10-Minuten-Intervall in der Stichprobe müssten eingestellt werden, um die spezifische Belastung - um genau zu sein, der laden muss komplett innerhalb des angegebenen Intervalls und der nächste laden muss nicht gestartet werden in weniger als der angegebenen Zeit.
Ein Nachteil ist, dass es verlangsamt sich spürbar auf großen Mengen - das ist der Preis, läuft der MAX-Aggregat auf jeder Linie.
Es sei denn, ich bin fehlt die Idee, die ich glaube nicht, dass die Reihenfolge würde für diesen Zweck - wir müssen eine ID für eine Gruppe von Datensätzen, die nicht für jeden einzelnen Datensatz; die Reihenfolge würde die Schrittweite in jedem stecken.
InformationsquelleAutor Vitali Tchalov