Also ich bin ziemlich neu in Postgresql und begann damit zu arbeiten, indem Sie einige Sachen mit pgadmin4 auf Postgres9.6 testen.Importieren CSV in Postgres: Update & Einfügen zur gleichen Zeit
Das Problem:
Ich habe eine Tabelle: Test (id, Text)
In dieser Tabelle Ich habe 10 Datenzeilen. Jetzt möchte ich eine CSV importieren, die 12 Zeilen hat, um die Testtabelle zu aktualisieren. Einige Textänderungen für die ersten 10 Zeilen UND ich möchte die 2 zusätzlichen Zeilen aus der CSV einfügen.
Ich weiß, dass Sie alle Daten aus einer Tabelle abschneiden und alles wieder aus der CSV importieren können, aber das ist keine gute Möglichkeit, dies zu tun. Ich möchte meine vorhandenen Daten aktualisieren & Fügen Sie die neuen Daten mit einer Abfrage ein.
Ich habe bereits eine Funktion gefunden, die dies mit einer temporären Tabelle lösen sollte. Dies aktualisiert die vorhandenen Zeilen richtig, aber die zwei zusätzlichen Zeilen werden nicht eingefügt
CREATE OR REPLACE FUNCTION upsert_test(integer,varchar) RETURNS VOID AS $$
DECLARE
BEGIN
UPDATE test
SET id = tmp_table.id,
text = tmp_table.text
FROM tmp_table
WHERE test.id = tmp_table.id;
IF NOT FOUND THEN
INSERT INTO test(id,text) values
(tmp_table.id,tmp_table.text);
END IF;
END;
$$ Language 'plpgsql';
DO $$ BEGIN
PERFORM upsert_test(id,text) FROM test;
END $$;
Also, was muss ich auch der Einsatz bekommen ändern zu arbeiten?
Unrelated, aber: die Sprache Name ist ein Bezeichner. Setzen Sie es nicht in einzelne Anführungszeichen verwenden: 'Sprache plpgsql' –