Schreibe
Datenbankblock
SQL*Loader SQL*Loader Benutzerprozesse
SQL-Kommando-Verarbeitung
Generiere SQL-
Kommandos
Generiere SQL-
Kommandos
Generiere SQL-
Kommandos
Generiere SQL-
Kommandos
Oracle-Server
Konventioneller
Pfad
Speichermanagement
Hole neue Ausmaße
Passe Füllstand an
Finde partielle Blöcke
Befülle partielle Blöcke
Puffer-Cache
Puffer-Cache-Management
- Manage Queues
- Löse Konflikte auf
Datenbankblöcke
lesen
Datenbankblöcke
schreiben
Datenbank
Direkter
Pfad
Abbildung 4.18: Oracle SQL-Loader: Direct Path
Datenbankfüllstand angepasst werden. So wird sichergestellt, dass genügend
Speicher zur Verfügung steht. Ein Nachteil ist jedoch das Anfügen der Daten
am Ende der Datenbank. Jedoch erfolgt im Data-Warehouse-System standard-
mäßig ein Einfügen neuer Daten. Das Ändern von Daten tritt eher selten ein.
4.5.2 Multi-Table-Insert
Eine weitere Alternative, Daten in Oracle effizient einzufügen, stellt der Multi-
Table-Insert dar. So können Daten beispielsweise in Pivot-Tabellen durch ein-
maliges Lesen direkt in die entsprechenden Tabellen verteilt werden.
JBeispiel 4-12I Das folgende Beispiel fügt Quartalsdaten in das Data Ware-
house ein.
116 4 Extraktions-, Transformations- und Ladeprozess
INSERT ALL
INTO Quartal
_
Verkauf
VALUES (Produkt
_
Nr, Jahr || ’/Q1’, Umsatz
_
Q1)
INTO Quartal
_
Verkauf
VALUES (Produkt
_
Nr, Jahr || ’/Q2’, Umsatz
_
Q2)
INTO Quartal
_
Verkauf
VALUES (Produkt
_
Nr, Jahr || ’/Q3’, Umsatz
_
Q3)
INTO Quartal
_
Verkauf
VALUES (Produkt
_
Nr, Jahr || ’/Q4’, Umsatz
_
Q4)
SELECT ... FROM ...
2
JBeispiel 4-13I Auch ein bedingtes Einfügen kann im Multi-Table-Insert er-
folgen. Das folgende Beispiel fügt die entsprechenden Werte in die Aktions-
Verkaufstabelle oder die Tabelle Top_Produkte ein.
INSERT ALL
WHEN ProdNr IN
(SELECT ProdNr FROM Werbe
_
Aktionen)
THEN INTO Aktions
_
Verkauf
VALUES (ProdNr, Quartal, Umsatz)
WHEN Umsatz > 1000 THEN
INTO Top
_
Produkte VALUES (ProdNr)
SELECT ... FROM ...
2
Eine weitere Alternative stellt der Merge in Oracle dar. Hierbei wird ver-
sucht, die Daten in die Zieltabelle einzufügen. Für den Fall, dass dies aufgrund
eines Fehlers hinsichtlich einer Verletzung der Schlüsselbedingung abgebro-
chen wird, erfolgt ein Update des entsprechenden Records.
JBeispiel 4-14I Im anschließenden Beispiel werden Kunden als Neukunden
eingefügt. Für den Fall, dass diese bereits existieren, werden die Kundendaten
geändert. Andernfalls erfolgt das Hinzufügen der neuen Daten.
MERGE INTO Kunde K USING Neukunde N
ON (N.Name = K.Name AND N.GebDatum = K.GebDatum)
WHEN MATCHED THEN
UPDATE SET K.Name = N.Name, K.Vorname=N.Vorname,
K.GebDatum=N.GebDatum
WHEN NOT MATCHED THEN
INSERT VALUES (MySeq.NextVal, N.Name,
N.Vorname, N.GebDatum)
2
4.5 Die Ladephase 117

Get Data Warehouse Technologien now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.