Par chance, j'ai été obligé de récupérer des données d'IBM i (également connu sous le nom d'AS400).
Je souhaite récupérer des données sur IBM i et les utiliser sous Linux ou Windows Vous souhaiterez peut-être utiliser les données de votre système pour l'apprentissage automatique ou l'analyse. Si vous utilisez simplement Python, vous pouvez également le traiter sur IBM i.
Cependant, cette fois, je souhaite utiliser GPU pour DL ou ML, je dois donc apporter les données sur Linux. Pour cela, je vais extraire les données avec JDBC + Python.
Bien sûr, vous pouvez utiliser Java pour récupérer les données. Cette fois, j'ai décidé d'utiliser JDBC de Python car je suis meilleur en Python. (DL et ML sont souvent écrits en Python, il peut donc être plus facile à inclure dans ce processus)
Cette fois, nous utiliserons JayDeBeApi
comme bibliothèque Python pour accéder à l'API JDBC.
https://github.com/baztian/jaydebeapi
Il prend en charge de nombreux types de bases de données. Il y a aussi DB2!
Supported databases
In theory every database with a suitable JDBC driver should work. It is confirmed to work with the following databases:
SQLite Hypersonic SQL (HSQLDB) IBM DB2 IBM DB2 for mainframes Oracle Teradata DB Netezza Mimer DB Microsoft SQL Server MySQL PostgreSQL many more...
Cette fois, il fonctionne sur Python 3.6.
La version de chaque logiciel est la suivante
Vous pouvez l'installer avec pip.
pip install JayDeBeApi
Si la version de JPype est la dernière, une erreur s'est produite lors de l'exécution, je l'ai donc réinstallée avec la version 0.6.3.
pip install JPype1==0.6.3 --force-reinstall
Cette fois, nous utiliserons le fichier Jar fourni en standard avec IBM i.
Puisque jt400.jar
est stocké dans le répertoire suivant, copiez-le d'IBM i vers l'environnement Linux à utiliser.
/QIBM/ProdData/HTTP/Public/jt400/lib/jt400.jar
Définissez «<nom d'hôte>», «
import jaydebeapi
conn = jaydebeapi.connect("com.ibm.as400.access.AS400JDBCDriver", "jdbc:as400://<hostname>", ["<user>", "<password>"], "/home/IBMi/jt400.jar",)
cur = conn.cursor()
cur.execute("select * from TSLIB.WORKDAY")
cur.fetchall()
curs.close()
conn.close()
En exécutant ce script Python, j'ai pu obtenir les données d'IBM i. En changeant l'instruction SQL de ʻexecute`, vous pouvez également changer l'opération sur la base de données.
Recommended Posts