Ist es möglich, eine Verbindung zu einer IBM DB2-Datenbank herzustellen, ohne ODBC zu verwenden?Hallo,
Wir verwenden eine IBM DB2-Datenbank über eine SSL-Verbindung. Die OCBC-Verbindung zur Datenbank funktioniert gut, ist aber für die meisten Benutzer recht komplex einzurichten. Wenn eine Software eine „DB2-Verbindung vom Typ 4“ verwenden kann, ist ODBC nicht erforderlich. Es wird nur eine „Verbindungszeichenfolge“ direkt an den Remote-Server gesendet. Die Parameter dieser Zeichenfolge werden normalerweise direkt in der Software konfiguriert. In der Software wird eine Verbindungskonfiguration mit den richtigen Parametern erstellt, die von der IT sehr einfach zu dokumentieren und von den Benutzern auszuführen ist.
Ich habe das Gefühl, dass JMP eine „Typ 4-Verbindung“ nicht direkt unterstützt, R und Python jedoch schon. Und es ist auch möglich, Daten in einem JSL-Skript zu extrahieren, wie im folgenden Beispiel. Könnten wir ein kleines Python-Skript erstellen, das eine Datenbankverbindung herstellt, die dann für JSL oder den Abfrage-Generator verfügbar wäre?
// JSL Script to extract some IBM DB2 data
New SQL Query(
Connection(
"ODBC:DSN=DBPROD1;MODE=SHARE;PWD=%_PWD_%;SECURITY=SSL;SSLCLIENTKEYSTASH=C:\BRMDB2\ssl\truststore.sth;SSLCLIENTKEYSTOREDB=C:\BRMDB2\ssl\truststore.kdb;SSLSERVERCERTIFICATE=C:\BRMDB2\ssl\carootcert.der;UID=%_UID_%;"
),
QueryName( "Extract exemple" ),
CustomSQL(
"SELECT NAME
,EMPLOYEE_NB
,DEPARTMENT
,SALARY
FROM
EMPLOYEE_TABLE
WHERE
DEPARTMENT = 'MFG02'"
)
) << RunVielen Dank für Ihre Hilfe!
DatenzugriffBetreff: Ist es möglich, eine Verbindung zu einer IBM DB2-Datenbank herzustellen, ohne ODBC zu verwenden?Basierend auf diesen Datenkonnektoren müssten Sie ODBC verwenden. Eine andere Möglichkeit wäre, die Python-Integration zum Erstellen der Abfragen zu verwenden. Schreiben Sie eine Funktion, die beispielsweise die Abfrage aufnimmt und darin ein Python-Skript ausführt, um die Abfrage auszuführen und das Ergebnis als Datentabelle zurückgibt.
Betreff: Ist es möglich, eine Verbindung zu einer IBM DB2-Datenbank herzustellen, ohne ODBC zu verwenden?Hallo,
Das ist ungefähr das, was ich mir vorgestellt habe, aber ich hatte gehofft, dass die Verbindung ein unabhängig erstelltes Objekt sein könnte, das für SQL-Abfragen verfügbar gemacht wird. Ich werde Ihren Vorschlag testen und hier Feedback geben. Ich gehe davon aus, dass ich eine Python-Skript-„Vorlage“ schreiben kann, die meine Kollegen in ihr JMP einfügen und den SQL-Code entsprechend ihren Anforderungen hinzufügen können. Ich bin überzeugt, dass es funktionieren sollte. Ich werde jedoch prüfen, ob diese Lösung funktionsfähig und für meine Kollegen verwendbar ist. Wenn ja, werde ich hier Feedback geben und die Antwort als akzeptable Lösung akzeptieren. Es hängt davon ab, wie gut sie mit SQL umgehen können und wie groß die Tabellen sind.
Vielen Dank für die Antwort,
Betreff: Ist es möglich, eine Verbindung zu einer IBM DB2-Datenbank herzustellen, ohne ODBC zu verwenden?Ich bin nicht sicher, ob diese Art von Konnektoren in JMP18 verwendet werden kann, da dieses Add-In mindestens die Version von JMP19 EA 3, S3 Data Connector (JMP Marketplace) hat, aber es scheint Python als Konnektor für AWS S3 zu verwenden. Wenn es in JMP18 verwendet werden kann, könnte es einige Ideen liefern, was Sie tun könnten. Sie sollten das Add-In herunterladen und es dann beispielsweise mit 7zip extrahieren können.
Betreff: Ist es möglich, eine Verbindung zu einer IBM DB2-Datenbank herzustellen, ohne ODBC zu verwenden?Hallo,
Für Oracle- und Postgre-Datenbanken können wir nur die Verbindungszeichenfolge senden.
Ich denke, dass diese Methode auch für DB2 möglich sein sollte, ohne dass für jeden Computer ein ODBC mit einem Namen eingerichtet werden muss.
Ich könnte planen, es diesen oder nächsten Monat auszuprobieren.
Grüße,
Guillaume
Betreff: Ist es möglich, eine Verbindung zu einer IBM DB2-Datenbank herzustellen, ohne ODBC zu verwenden?Hallo,
Entschuldigen Sie meine verspätete Antwort.
Sie können es so machen (von meiner Seite getestet).
db2_connect =
"DRIVER={IBM DB2 ODBC DRIVER};
DATABASE= strDatabase;
HOSTNAME= strHostname;
PORT= strPort;
PROTOCOL=TCPIP;
UID= strUser;
PWD= strPassword;";
OpenDatabase(db2_connect, "SELECT * FROM SYSIBM.SYSDUMMY1;", "sysdummy1");You have to define the DRIVER and all other varaibles strDatabase, strHostname, strPort, strUser, strPassword
Bei Verwendung von SSL könnten Sie Folgendes versuchen (nicht getestet):
"DRIVER={IBM DB2 ODBC DRIVER};
DATABASE=strDatabase;
HOSTNAME=strHostname;
PORT=strPort;
PROTOCOL=TCPIP;
SECURITY=SSL;
UID=strUser;
PWD=strPassword;
SSLCLIENTKEYSTOREDB=/path/to/client/keystore.kdb;
SSLCLIENTKEYSTASH=/path/to/client/keystore.sth;
SSLCLIENTKEYPASSWORD=keystore_password;"
Grüße,
Guillaume
Betreff: Ist es möglich, eine Verbindung zu einer IBM DB2-Datenbank herzustellen, ohne ODBC zu verwenden?Möglicherweise müssen Sie für die SSL-Verbindung weitere Verbindungsparameter verwenden.