IBM PureData System for Analytics Version 7.1

Transiente externe Tabellen

Mit transienten externen Tabellen (TET) hat der Benutzer die Möglichkeit, nur für die Dauer einer einzigen Abfrage eine externe Tabelle zu definieren.

Transiente externe Tabellen weisen dieselben Funktionen und Einschränkungen auf wie normale externe Tabellen. Ein besonderes Feature einer TET ist, dass das Tabellenschema nicht definiert werden muss, wenn die TET verwendet wird, um Daten in eine Tabelle zu laden, oder wenn die TET als Ziel einer SELECT-Anweisung erstellt wird.

Syntax

Syntax für eine TET:
INSERT INTO <Tabelle> SELECT <Spaltenliste | *>
FROM EXTERNAL 'Dateiname' [(Tabellenschemadefinition)]
[USING (Optionen_für_externe_Tabelle)];

CREATE EXTERNAL TABLE 'Dateiname' [USING (Optionen_für_externe_Tabelle)]
AS SELECT-Anweisung;

SELECT <Spaltenliste | *> FROM EXTERNAL 'Dateiname' (Tabellenschemadefinition)
[USING (Optionen_für_externe_Tabelle)];

Explizite Definition des Tabellenschemas

Das Tabellenschema einer transienten externen Tabelle kann in einer Abfrage explizit definiert werden. Die auf diese Weise erstellte Tabellenschemadefinition ist identisch mit der Definition, die verwendet wird, wenn ein Tabellenschema über CREATE TABLE definiert wird.
SELECT x, y, NVL(dt, current_date) AS dt FROM EXTERNAL '/tmp/test.txt'
( x integer, y numeric(18,4), dt date ) USING (DELIM ',');
Die explizite Schemadefinition kann verwendet werden, um Formate mit fester Länge anzugeben.
SELECT * FROM EXTERNAL '/tmp/fixed.txt' ( x integer, y numeric(18,4), 
dt date ) USING (FORMAT 'fixed' LAYOUT (bytes 4, bytes 20, bytes 10));
Das Schlüsselwort SAMEAS kann auch verwendet werden, um anzugeben, dass das Schema der externen Tabelle identisch mit dem einer anderen zurzeit in der Datenbank vorhandenen Tabelle ist.
SELECT * FROM EXTERNAL '/tmp/test.txt' SAMEAS Testtabelle
USING (DELIM ',');

Implizite Definition des Tabellenschemas

Wenn das Schema der transienten externen Tabelle nicht definiert ist, wird es auf der Basis der ausgeführten Abfrage festgelegt. Wird eine TET als Datenquelle für eine INSERT-Anweisung verwendet, dann verwendet die externe Tabelle das Schema der Zieltabelle.

Die externe Tabelle in dieser INSERT-Anweisung verwendet das Schema der Zieltabelle. Die Spalten in der Datendatei der externen Tabelle müssen dieselbe Reihenfolge aufweisen wie die Spalten in der Zieltabelle und jede Spalte in der Zieltabelle muss auch in der Datendatei der externen Tabelle vorhanden sein.
INSERT INTO Ziel SELECT * FROM EXTERNAL '/tmp/data.txt'
USING (DELIM '|');

Daten mithilfe transienter externer Tabellen exportieren

Eine transiente externe Tabelle kann auch verwendet werden, um Daten aus der Datenbank zu exportieren. In diesem Fall wird das Schema der externen Tabelle auf der Basis der ausgeführten Abfrage festgelegt. Beispiel:

CREATE EXTERNAL TABLE '/tmp/export.csv' USING (DELIM ',') AS
SELECT foo.x, bar.y, bar.dt FROM foo, bar WHERE foo.x = bar.x;

Ferne transiente externe Tabellen

In einer Sitzung, die mittels ODBC, JDBC oder OLE DB auf einem Clientsystem mit IBM® Netezza verbunden ist, können Daten importiert und exportiert werden, indem eine ferne transiente externe Tabelle verwendet wird, die mit der Option REMOTESOURCE in der USING-Klausel definiert wird.

So lädt z. B. die folgende SQL-Anweisung über eine ODBC-Verbindung Daten aus einer Datei auf einem Windows-System in eine temporäre Tabelle auf Netezza.
CREATE TEMP TABLE mydata AS SELECT cust_id, upper(cust_name) as name
from external 'c:\customer\data.csv' (cust_id integer, cust_name
varchar(100)) USING (DELIM ',' REMOTESOURCE 'ODBC');

Bei Ladeoperationen mit fernen externen Tabellen wird der Inhalt einer Datei vom Clientsystem an den Netezza-Server gesendet, wo anschließend ein Parsing für die Daten durchgeführt wird. Mit dieser Methode wird die CPU-Auslastung auf dem Clientsystem während eines Ladevorgangs aus einer fernen externen Tabelle minimiert.



Feedback | Copyright IBM Corporation 2013 | Letzte Aktualisierung: 2013-07-31