Ich habe Tabelle T1
in Datenbank DB1
und Tabelle T2
in Datenbank DB2
, haben diese Tabellen fast identische Sätze von Spalten mit Ausnahme Spalte C_additional
in T1
, die in T2
nicht vorhanden ist. Ich muss alle Zeilen von T2
zu T1
übertragen, einen Wert von C_additional
für jede Zeile setzend, die ich einfüge. Zum Beispiel: T1
und T2
haben nur eine Spalte C1
vom Typ integer
und T1
auch Spalte C_additional
Typ hat text
, so dass mein Code sieht wie folgt aus:PostgreSQL INSERT FROM SELECT mit zusätzlichen Spalt
INSERT INTO T1
SELECT
C1,
C_additional='needed_value'
FROM dblink(
'hostaddr=127.0.0.1 port=5432 dbname=DB2 user=postgres password=postgres',
'SELECT * FROM T2')
AS T2_row(C1 integer)
Ich erhalte die folgende Fehlermeldung:
ERROR: column "C_additional" does not exist
SQL state: 42703
Hint: There is a column named "C_additional" in table "T1", but it cannot be referenced from this part of the query.
Wie kann ich die Datenübertragung mit SQL durchführen, oder sollte ich PG/SQL verwenden?
Zeigen Sie uns, T1 und Definitionen des t2. – jarlh
'C_additional = 'needs_value'' ist ein boolescher Ausdruck, der auswertet, ob der Spaltenname' C_additional' gleich der Konstanten '' needs_value' 'ist. Wenn Sie einen Spaltenalias verwenden möchten, verwenden Sie einen: ''needs_value' als c_additional' –