¿Es posible conectarse a una base de datos IBM DB2 sin utilizar ODBC?Hola,
Utilizamos una base de datos IBM DB2 a través de una conexión SSL. La conexión OCBC a la base de datos funciona bien, pero es bastante compleja de configurar para la mayoría de los usuarios. Si un software puede utilizar una "conexión db2 de tipo 4", no se requiere ODBC. Solo se envía una "cadena de conexión" directamente al servidor remoto. Los parámetros de esta cadena se configuran normalmente directamente en el software. Se crea una configuración de conexión en el software con los parámetros adecuados, que es muy sencilla de documentar por parte del departamento de TI y de ejecutar por parte de los usuarios.
Creo que JMP no admite una "conexión de tipo 4" directamente, pero R y Python sí. Y también es posible extraer datos en un script JSL, como el ejemplo siguiente. ¿Podríamos crear un pequeño script Python que cree una conexión de base de datos que luego esté disponible para JSL o para el generador de consultas?
// 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'"
)
) << Run¡Gracias por tu ayuda!
Acceso a datosRe: ¿Es posible conectarse a una base de datos IBM DB2 sin utilizar ODBC?En función de estos conectores de datos, deberá utilizar ODBC. Otra opción sería utilizar la integración de Python para realizar las consultas. Escriba una función que tome, por ejemplo, la consulta y, dentro de ella, ejecute un script de Python para realizar la consulta y devolver el resultado como una tabla de datos.
Re: ¿Es posible conectarse a una base de datos IBM DB2 sin utilizar ODBC?Hola,
Esto es más o menos lo que tenía en mente, pero esperaba que la conexión pudiera ser un objeto creado de forma independiente y disponible para consultas SQL. Pondré a prueba tu sugerencia y daré mi opinión aquí. Supongo que puedo escribir una "plantilla" de script de Python que mis colegas podrían pegar en su JMP, agregando el código SQL según sus necesidades. Estoy convencido de que debería funcionar. Sin embargo, comprobaré si esta solución es funcional y utilizable por mis colegas. Si lo es, daré mi opinión aquí y aceptaré la respuesta como una solución aceptable. Depende de lo buenos que sean con SQL y del tamaño de las tablas.
Gracias por la respuesta,
Re: ¿Es posible conectarse a una base de datos IBM DB2 sin utilizar ODBC?No estoy seguro de si este tipo de conectores se pueden realizar en JMP18, ya que este complemento tiene la versión mínima de JMP19 EA 3, S3 Data Connector (JMP Marketplace) , pero parece estar usando Python como conector para AWS S3. Si se puede usar en JMP18, podría dar algunas ideas de lo que podría hacer. Debería poder descargar el complemento y luego extraerlo usando 7zip, por ejemplo.
Re: ¿Es posible conectarse a una base de datos IBM DB2 sin utilizar ODBC?Hola,
Para las bases de datos Oracle y Postgre, podemos enviar solo la cadena de conexión.
Creo que este método también debería ser posible para db2 sin configurar el ODBC con un nombre para cada computadora.
Podría planear probarlo este mes o el próximo mes.
Saludos,
Guillermo
Re: ¿Es posible conectarse a una base de datos IBM DB2 sin utilizar ODBC?Hola,
Perdón por mi respuesta tardía.
Puedes hacerlo así (probado en mi caso).
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
Usando SSL, puedes probar esto (no probado):
"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;"
Saludos,
Guillermo
Re: ¿Es posible conectarse a una base de datos IBM DB2 sin utilizar ODBC?Tal vez tengas que usar más parámetros de conexión para la conexión SSL.