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.
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)];
SELECT x, y, NVL(dt, current_date) AS dt FROM EXTERNAL '/tmp/test.txt'
( x integer, y numeric(18,4), dt date ) USING (DELIM ',');
SELECT * FROM EXTERNAL '/tmp/fixed.txt' ( x integer, y numeric(18,4),
dt date ) USING (FORMAT 'fixed' LAYOUT (bytes 4, bytes 20, bytes 10));
SELECT * FROM EXTERNAL '/tmp/test.txt' SAMEAS Testtabelle
USING (DELIM ',');
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.
INSERT INTO Ziel SELECT * FROM EXTERNAL '/tmp/data.txt'
USING (DELIM '|');
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;
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.
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.