So fügen Sie Array-Elemente in die PostgreSQL-Tabelle ein

9

Geben Sie ein Array wie folgt an:

%Vor%

und eine Tabelle wie diese:

%Vor%

Wie kann ich die Array-Werte in eine Tabelle einfügen? Grob gesagt möchte ich so etwas mit SQL machen:

%Vor%

Die aktualisierte Tabelle sollte so aussehen

%Vor%

UPDATE: Ich benutze Python psycopg2, aber ich frage mich, ob es einen Weg mit reinem SQL gibt.

    
ustroetz 20.03.2015, 10:49
quelle

3 Antworten

3

Sie müssen irgendwie einen Array- "Index" für jede Zeile in der Tabelle generieren.

Wenn der column1 -Wert immer mit dem Array-Index übereinstimmt, können Sie das so machen.

%Vor%

Wenn jedoch der Wert in column1 nicht den Array-Index widerspiegelt, müssen Sie den Array-Index basierend auf der Sortierreihenfolge in der Tabelle generieren. Wenn dies der Fall ist, können Sie so etwas tun:

%Vor%

Wenn Ihre Tabelle einen richtigen Primärschlüssel hat, können Sie diesen anstelle der Spalte ctid verwenden.

    
a_horse_with_no_name 20.03.2015, 12:20
quelle
6

Verwenden Sie in Postgres 9.4 den WITH ORDINALITY dafür. Schneller und sauberer als alles andere.

%Vor%

Unter der Annahme, dass column1 die Position von column2 im angegebenen Array darstellt, werden nur Spalten aktualisiert, die aktualisiert werden sollen und keine anderen Zeilen berühren (wie die einfache Abfrage in @ a_horse).

Die Ordinalposition eines Elements ist auch der Standard-Array-Index in einem 1-dimensionalen Array, aber Postgres erlaubt beliebige Array-Indizes:

Dies funktioniert unabhängig von tatsächlichen Array-Indizes.

    
Erwin Brandstetter 20.03.2015 23:35
quelle
-5

gefällt das

%Vor%     
avk 20.03.2015 10:53
quelle

Tags und Links