Unterschiedliche Anzahl an Datensätzen - Abhängig von einer bestimmten Spalte beim Select-Statement (ODBC-FDW)

Moin Postgre-Profis,

ich habe ein kleines Problemchen mit einem ODBC-FDW, das ich mir nicht erklären kann.
Ziel ist es, Daten von einer Progress-Datenbank auszulesen und in Postgre zu importieren. Dazu nutze ich einen ODBC Data-Wrapper, der mir die Daten mit Hilfe eines Progress-ODBC-Treibers abholt.

Nun ist es so, dass ich eine andere Anzahl von Daten zurückbekomme, sofern ich eine bestimmte Spalte in der Abfrage hinzfüge oder auslasse. Die Spalte ist ein Array-Feld in der Progress-Datenbank - das sollte aber eigentlich irrelvant sein.

Noch ein paar Rahmeninformationen:

  • Die Werte in dieser Spalte sind in allen Datensätzen 100% identisch. Bei den vorhandenen Datensätzen werden die Array-Werte mit “;” getrennt ausgegeben - aber wie gesagt: Der Inhalt ist in allen Datensätzen komplett identisch. Keine versteckten Leerzeichen, \n, \t oder sonstigen Überraschungen.
  • Codepage zwischen Postgre und Progress ist identisch.
  • Der identische ODBC-Treiber gibt mir in einer EXCEL-Datenabfrage Alle Datensätze zurück.
  • Postgre läuft auf einem Windows Server

Ich bin hier wirklich langsam am verzweifeln, da ich überhaupt keinen Anhaltspunkt habe, wo ich noch gucken kann.

Über Tipps oder Hinweise wäre ich sehr sehr dankbar!

Viele Grüße und schon einmal vorab vielen vielen Dank!

Sebastian

PS: Ein “Beweisfoto” :slight_smile: habe ich mal angehangen!

solche “Beweisfotos” sind nutz- und wertlos. Besser wäre ein reproduzierbares Beispiel, was man via Copy&Paste selber austesten kann.

1 „Gefällt mir“

Ich kann die Screenshots kaum lesen (Code sollte man als Text posten, nicht als Bilder) aber was ist denn das für ein Datentyp in Progress? Du schreibst etwas von “arrays”, vielleicht passiert da irgendeine Konvertierung in dem FDW. Hast Du mal versucht die Spalte in Postgres auch als array zu definieren? (also text[] oder varchar[]).

Wenn der FDW nicht mit den Progress Arrays umgehen kann, dann vielleicht eine View in Progress anlegen die das in eine “normale” Text/Varchar Spalte umwandelt (CAST?) und die Foreign Table auf die View zeigen lassen.

Übrigens heisst es PostgreSQL oder einfach nur Postgres

Edit: vielleicht kann man diese Konvertierung (“Array” → varchar) auch in der ODBC Datenquelle konfigurieren.

1 „Gefällt mir“

Vielen Dank für eure Antworten!
@castorp war auf der richtigen Spur. Ich hatte zwar das array schon einmal in einen varchar umgewandelt - dabei aber wohl einen Fehler gemacht. mit dem korrekten Befehl funktioniert es nun perfekt!

,substring(“Bezeichnung”,1,255) as “Bezeichnung”

Vielen Dank für Eure Unterstützung!

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.