Skip to main content
Weil einfach - produktiver ist

Der Daten Spezialist

Konvertieren Sie die Daten mühelos zwischen verschiedenen Formaten ohne Programmierkenntnisse dank Visual Designer. Effizient und super einfach.
Flowheater Download

Probleme mit ODBC Treibern

Mehr
7 Jahre 2 Monate her #2986 von Flo
Probleme mit ODBC Treibern wurde erstellt von Flo
Hallo zusammen,

ich versuche eine uralte 4D Datenbank (v6.5.9) in MySQL zu transferieren. Um auf 4D zu kommen nutze ich den zugehörigen ODBC Treiber [Simba ODBC Driver]. Bei einigen Tabellen bekomme ich auch deutlich >10.000 Datensätze problemlos übertagen. Leider gibt es jedoch auch Tabellen bei denen nach ca. 2 - 30 Datensätzen ein Abbruch mittel ODBC ERROR erfolgt. Hier bestehlt leider auch keine Möglichkeit herauszufinden was nun der Auslöser war. (Warnungen, Debug ist beides 0).
Mittels bspw. ODBC Query Tool v1.39 bekomme ich jedoch alle Tabellen per SQL query problemlos geladen und angezeigt. (viele andere ODBC Tools lassen den ODBC Treiber leider auch abstürzen, daher die expliziten Benennung des Programms!)
Da ich eigentlich per Batch arbeiten wollte, wäre eine Manuelle Zwischenlösung über eine TXT Datei, allein schon aufgrund der Menge an Tabellen hier nicht zielführend.
Gibt es hier vielleicht eine Lösung oder hat jemand eine Idee? (DSN User/System Wechsel bewirkt schon mal nix)

Danke schon mal für Infos und Hilfe

Bitte Anmelden um der Konversation beizutreten.

Mehr
7 Jahre 2 Monate her - 7 Jahre 2 Monate her #2987 von FlowHeater-Team
FlowHeater-Team antwortete auf Probleme mit ODBC Treibern
Hallo Flo,

mit 4D Datenbanken haben ich leider noch keine Erfahrungen sammeln können, ich kenne auch hier niemanden der das bisher damit versuch hat. Aber so leicht geben wir nicht auf :) Bitte versuchen Sie mal folgendes.

Unter https://flowheater.net/files/tools/ODBC-Query.zip finden Sie kleines ODBC Query Tool das die Daten nativ abruft ohne den Overhead vom FlowHeater ODBC Adapter . Falls ein Fehler auftritt wird hier auch die technische Fehlermeldung angezeigt. Im ZIP Archiv ist sowohl eine 32 Bit wie auch eine 64 Bit Variante. Sie benötigen die Version in der auch der 4D ODBC Treiber vorliegt.

Nachdem Sie das FlowHetaer ODBC Query Tool gestartet haben geben Sie hier Ihre ODBC Verbindungszeichenfolge zur 4D Datenbank ein. Im darunterliegenden Textfeld tragen Sie den SQL Query ein den Sie auf der 4D Datenbank absetzen möchten. Falls alles klappt werden die Daten dann im Grid angezeigt.

Bitte exportieren davon jeweils die Daten sowie das Schema davon. Zur weiteren Analyse bräuchte ich das jeweils einmal von einer Tabelle mit der es aus dem FlowHeater heraus funktioniert sowie einmal wobei ein Fehler auftritt. Bitte auch den verwendeten SQL Query mit anfügen.

PS: Falls Sie die Daten hier im Forum nicht posten möchten können Sie diese auch gerne per Email zuschicken.

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Letzte Änderung: 7 Jahre 2 Monate her von FlowHeater-Team.

Bitte Anmelden um der Konversation beizutreten.

Mehr
7 Jahre 2 Monate her - 7 Jahre 2 Monate her #2988 von FlowHeater-Team
FlowHeater-Team antwortete auf Probleme mit ODBC Treibern
Hallo Flo,

vielen Dank für die Informationen per Email, die waren sehr hilfreich. Ich vermute das liegt an dem D4 Datenbank Datentyp LONGINT in den betroffenen Tabellen.

Versuchen Sie mal bitte folgendes. Erstellen Sie eine neue Definition und konfigurieren den ODBC Adapter für den Zugriff auf die D4 Datenbank. Auf dem Reiter „Felder / Datentypen“ wählen Sie jedoch keine Tabelle aus sondern tragen im SQL folgendes ein.

Select NACHNAME, VORNAME, LAND, PLZ, ORT from PERONEN


Anschließend rufen Sie über den Button „Felder einlesen“ die Tabellen Schemainformationen ab und versuchen nun die Tabelle zu exportieren.

Wenn das funktioniert ist meine Vermutung richtig, dann liegt das am Zusammenspiel des verwendeten Simba ODBC Treiber mit dem .NET Framework wie die Daten von der Datenquelle abgerufen werden. Das Problem ist dass der Datentyp eigentlich INT64 (8 Byte) ist, das Framework versucht jedoch einen INT32 (4 Byte) zu lesen und der Simba ODBC Treiber quittiert das mit einem Fehler. Eigentlich sollte hier nur ein Fehler geworfen werden wenn der Wert nicht mehr in einen INT32 passt! Ich denke nicht, dass Sie für die Felder solch große Zahlenwerte benötigen, mit INT32 können Werte bis ca. 2 Milliarden abgebildet werden.

Sie haben nun zwei Möglichkeiten:
  1. Sie ignorieren diese Felder in der Feldauflistung im obigen SQL Select und exportieren nur Felder der betroffenen Tabellen ohne diese LONGINT Datentypen. Hat natürlich zur Folge, dass Sie diese Wert im Export nicht zur Verfügung haben und verloren gehen.

  2. Sie führen beim SELECT einen CAST bzw. einen CONVERT auf den Datentyp durch.

    z.B. select NACHNAME, cast(FIRMA_NR as int) from PERSONEN

    Da ich jetzt die genaue Syntax der D4 Datenbank nicht kenne ist der CAST für den MS SQL Server ausgerichtet, das müssen Sie ggf. für Ihre D4 Datenbank anpassen!

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Letzte Änderung: 7 Jahre 2 Monate her von FlowHeater-Team.

Bitte Anmelden um der Konversation beizutreten.

Mehr
7 Jahre 2 Monate her #2991 von Flo
Flo antwortete auf Probleme mit ODBC Treibern
Rückmeldung/Lösung

Nach einigem ausprobieren scheint es Probleme bei der Verarbeitung des Variablentype TEXT zu geben. Mittels nativen ODBC Adapter bekommt man (ich) dies auch in der bestehenden Situation nicht gelöst. Auch der Befehlt CAST wird scheinbar nicht von den 4D ODBC Treibern unterstützt (oder ich finde die richtigen Syntax nicht).
FlowHeater scheint hier aber einige Fehler abzufangen, wodurch sich für mich folgende Lösung ergibt:

Die Datenfelder in FlowHeater unter der Verwendung von SELECT einlesen (Scrollleiste, oder flexibles Eingabefeld wäre hier bei vielen Datenfeldern im erweiterten Fenster hilfreich).
TEXT Variablentypen mittels convert(“<<Feld>>“, SQL_LONGVARCHAR) einlesen.
Damit die Feldbezeichnungen noch verständlich angezeigt werden, am besten mit AS noch wie folgt ergänzen.
Code:
SELECT convert(“text_Datenfeld“, SQL_LONGVARCHAR) as “text_Datenfeld“ FROM tabelle

Die nachfolgende Liste beinhaltet die Umwandlungstabellen der 4D ODBC-Treiber 6.5 mit den zugehörigen 4D Server-Datentypen und ihre entsprechenden ODBC SQL-Datentypen.
4D Server Data TypesODBC SQL Data Types
AlphaSQL_VARCHAR
TextSQL_LONGVARCHAR
RealSQL_DOUBLE
IntegerQL_SMALLINT
Long IntegerSQL_INTEGER
DateSQL_DATE
TimeSQL_TIME
BooleanSQL_BIT
PictureSQL_LONGVARBINARY
SubtableN/A
BLOBN/A


Sollte noch jemand einmal eine ähnliche Problemstellung haben, hilft dies ja vielleicht weiter, schöne Grüße

Bitte Anmelden um der Konversation beizutreten.

Ladezeit der Seite: 0.333 Sekunden

FlowHeater - Der Daten Spezialist

Effiziente Datenintegration und Transformation mit FlowHeater - Ihre Lösung für nahtlosen Datentransfer.

Rechtliches

Support & Kontakt

Kontaktinformation

Telefon:
0951 / 99339792

E-Mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


Copyright © 2009-2024 by FlowHeater GmbH. Alle Rechte vorbehalten.