Diese Seite enthält Scripts, die beim Debuggen und Verwenden von PostgreSQL helfen.
UPDATE- und DELETE-Vorgänge für Tabellen ohne Primärschlüssel migrieren
Bei Tabellen ohne Primärschlüssel unterstützt Database Migration Service die Migration des ersten Snapshots und der INSERT-Anweisungen während der CDC-Phase (Change Data Capture).
Informationen zum Aktualisieren der fehlenden UPDATE- und DELETE-Prozesse finden Sie in den folgenden Abschnitten dieses Dokuments.
Fehlende Daten zwischen Quell- und Cloud SQL-Zielinstanzen erkennen
Ermitteln Sie, welche Tabellen keine Primärschlüssel haben:
select tab.table_schema,
tab.table_name
from information_schema.tables tab
left join information_schema.table_constraints tco
on tab.table_schema = tco.table_schema
and tab.table_name = tco.table_name
and tco.constraint_type = 'PRIMARY KEY'
where tab.table_type = 'BASE TABLE'
and tab.table_schema not in ('pg_catalog', 'information_schema', 'pglogical')
and tco.constraint_name is null
order by table_schema,
table_name;
Prüfen Sie vor Beginn der Migration mit dieser Abfrage, ob für alle Tabellen ohne Primärschlüssel Aktualisierungen oder Löschungen erforderlich sind:
SELECT schemaname,
relname,
n_tup_ins,
n_tup_upd,
n_tup_del
FROM pg_stat_user_tables
WHERE schemaname NOT IN
('pglogical', 'pg_catalog', 'information_schema');
Wobei:
n_tup_ins: Anzahl der eingefügten Zeilen
n_tup_upd: Anzahl der aktualisierten Zeilen (einschließlich HOT-aktualisierter Zeilen)
n_tup_del: Anzahl der gelöschten Zeilen
Speichern Sie diese Ergebnisse entweder in einer separaten Tabelle oder in einer Datei.
Führen Sie die Abfrage nach Abschluss der Migrationseinrichtung noch einmal aus.
Vergleichen Sie die Ergebnisse mit den Ergebnissen aus Schritt 3.
Wenn sich die Werte von n_tup_upd oder n_tup_del in der Quelle während der Migration unterscheiden, wurden in der Quelle möglicherweise einige Daten aktualisiert oder gelöscht.
Daten manuell von der Quelle zu den Cloud SQL-Zielinstanzen migrieren
Wenn Sie Abweichungen zwischen der Quelle und der Cloud SQL-Zielinstanz feststellen, können Sie die Daten mit einer der folgenden Optionen migrieren:
Option 1: Sie vergleichen die Daten zwischen der Quelle und dem Cloud SQL-Ziel manuell und führen entsprechende SQL-Abfragen aus, um nur die Daten zu aktualisieren, die sich zwischen der Quelle und dem Replikat unterscheiden.
Option 3: Mit dem Postgres-Befehl COPY Daten migrieren Weitere Informationen finden Sie in der PostgreSQL-Dokumentation. Für diesen Schritt muss die Replik-VM eine Verbindung zur Quell-VM herstellen können.
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-08-18 (UTC)."],[[["\u003cp\u003eThis page provides debugging scripts and guidance for using PostgreSQL within the Database Migration Service.\u003c/p\u003e\n"],["\u003cp\u003eDatabase Migration Service supports the migration of initial snapshots and \u003ccode\u003eINSERT\u003c/code\u003e statements for tables without primary keys, but \u003ccode\u003eUPDATE\u003c/code\u003e and \u003ccode\u003eDELETE\u003c/code\u003e operations may need manual intervention.\u003c/p\u003e\n"],["\u003cp\u003eYou can identify tables lacking primary keys and check for any updates or deletes on the source during migration using the provided SQL queries against the \u003ccode\u003einformation_schema\u003c/code\u003e and \u003ccode\u003epg_stat_user_tables\u003c/code\u003e tables.\u003c/p\u003e\n"],["\u003cp\u003eIf data discrepancies are found between the source and the Cloud SQL destination instance, you can manually resolve them by comparing and updating data, or by utilizing \u003ccode\u003epg_dump\u003c/code\u003e/\u003ccode\u003epg_restore\u003c/code\u003e or the \u003ccode\u003eCOPY\u003c/code\u003e command for the affected tables.\u003c/p\u003e\n"],["\u003cp\u003eIt is important to potentially clean the replica before using \u003ccode\u003epg_restore\u003c/code\u003e or \u003ccode\u003eCOPY\u003c/code\u003e commands if there is data that was previously migrated.\u003c/p\u003e\n"]]],[],null,[]]