2016-07-19 2 views
0

Kann jemand vorschlagen, wie CONNECT BY Oracle Abfrage in Greenplum konvertieren. Greenplum unterstützt keine rekursiven Abfragen. Daher können wir WITH RECURSIVE nicht verwenden. Gibt es alternative Lösung, um die folgende Abfrage neu zu schreiben.Wie CONNECT BY in Greenplum konvertieren

Antwort

0

Es gibt Möglichkeiten, dies zu tun, aber es wird eine einmalige pro Abfrage sein. Sie müssen eine Funktion erstellen, die Ihre Pfadnodentabelle durchläuft, und "return next", um jede Zeile zurückzugeben. Sie können auf dieser Site nach Beispielen suchen, um dies mit PostgreSQL 8.2 zu tun.

Es wird gearbeitet, um Greenplum nach PostgreSQL 8.3, 8.4 und so weiter zu rebasen. Diese späteren PostgreSQL-Versionen unterstützen "mit rekursivem", was die ANSI SQL-Methode zum Schreiben von SQL ist, aber Greenplum unterstützt es noch nicht. Wenn es von Greenplum unterstützt wird, glaube ich nicht, dass es so gut funktionieren wird. Die Abfrage erzwingt Schleifen und einzelne Zeilensuchen. Dies funktioniert hervorragend in einer OLTP-Datenbank, aber nicht so gut für eine MPP-Datenbank.

Ich empfehle Ihnen, Ihre Daten in Oracle mit einer VIEW zu transformieren und dann nur die Ansicht in eine Datei auszugeben, um sie in Greenplum zu laden. Die DDL mit einer selbstreferenzierenden N-Level-Tabelle wird in einer MPP-Datenbank nie eine gute Idee sein.

+0

Danke Jon. Ich habe rekursive Funktion erstellt. Es funktioniert gut für N-Level. – Syamala