Tabelle 1 (table1):
Hat die Spalten id, name, language, type
Tabelle 2 (table2):
Hat die Spalten id, name, language, type_id (identisch mit Tabelle 1 „type“)
Alle Zeilen mit dem Wert „fr“ als language sollen von der ersten Tabelle in die zweite Tabelle übernommen werden – mit einem SQL.
SET search_path TO 'public';
WITH
addressor_types as (SELECT type as type_id, name, language FROM table1 WHERE language='fr')
INSERT INTO table2 (type_id, name, language) (SELECT type_id, name, language FROM addressor_types);
SET search_path TO … = Setzen des Namensraumes, in dem Postgres sucht (kann weggelassen werden, wenn search_path=public)
WITH … = Common Table Expression (CTE), um die zutreffenden Zeilen der ersten Tabelle zwischenzuspeichern für den INSERT. Die Reihenfolge/Namen der Spalten beim INSERT muss/müssen übereinstimmen.
INSERT … = Der Befehl zum Einfügen der zuvor zwischengespeicherten Daten.