Utilisez l'instruction INSERT INTO pour écrire dans une ou plusieurs tables de destination (sinks) au sein d'un job.
Prise en charge des indications SQL
L'instruction INSERT prend en charge les indications SQL via le mot-clé OPTIONS pour transmettre des paramètres à une table de destination. Pour plus d'informations, consultez la documentation SQL Hints.
Écriture vers une seule destination
Exécutez directement une instruction INSERT INTO unique, sans bloc englobant.
-- Create a source table.
CREATE TEMPORARY TABLE datagen_source (
name VARCHAR,
score BIGINT
) WITH (
'connector' = 'datagen'
);
-- Create a sink table.
CREATE TEMPORARY TABLE blackhole_sink (
name VARCHAR,
score BIGINT
) WITH (
'connector' = 'blackhole'
);
-- Write transformed data to the sink.
INSERT INTO blackhole_sink SELECT UPPER(name), score FROM datagen_source;
Écriture vers plusieurs destinations
Regroupez plusieurs instructions INSERT INTO dans un ensemble d'instructions à l'aide des mots-clés BEGIN STATEMENT SET; et END;.
Une instruction écrivant vers plusieurs destinations doit impérativement commencer par BEGIN STATEMENT SET; et se terminer par END;.
L'exemple suivant écrit des données vers deux destinations distinctes à partir d'une même source.
-- Create a source table.
CREATE TEMPORARY TABLE datagen_source (
name VARCHAR,
score BIGINT
) WITH (
'connector' = 'datagen'
);
-- Create sink table A.
CREATE TEMPORARY TABLE blackhole_sinkA (
name VARCHAR,
score BIGINT
) WITH (
'connector' = 'blackhole'
);
-- Create sink table B.
CREATE TEMPORARY TABLE blackhole_sinkB (
name VARCHAR,
score BIGINT
) WITH (
'connector' = 'blackhole'
);
-- Write to both sinks in a single optimized execution.
BEGIN STATEMENT SET; -- Required for writing to multiple sinks.
INSERT INTO blackhole_sinkA
SELECT UPPER(name), sum(score)
FROM datagen_source
GROUP BY UPPER(name);
INSERT INTO blackhole_sinkB
SELECT LOWER(name), max(score)
FROM datagen_source
GROUP BY LOWER(name);
END; -- Required for writing to multiple sinks.