pysql , el sustituto perfecto de sqlplus
Posted on Sat 02 April 2011 in misc • 2 min read
Todo el que haya trabajado con oracle sabrá que el cliente de consola, sqlplus, es una aplicación poco amigable para trabajos repetitivos y tienes que estar continuamente modificando el formato de salida porque si no lo que sale por pantalla no se entiende. Eso no quiere quitarle méritos a sqlplus, una herramienta muy potente para la generación de informes, que es para lo que fue diseñado.
Hace ya un par de años, mirando en los repositorios de sourceforge, encontré un proyecto llamado pysql http://pysql.sourceforge.net aunque ahora tienen los repositorios en github https://github.com/digitalfox/pysql
Pysql es un sustituto para sqlplus, para gente como yo, que le guste usar la consola de forma intensa, pero sin renunciar a una aplicación potente.
Las caracteristicas que mas me gustan son:
- soporte para readline: podemos hacer edición de la linea de comandos, historial de comandos, control-R para completar
- informes AWR
- explain plan directo y con syntax-color
- ddl de objectos en un solo comando
- librerias: ponemos guardar una query con el comando lib para reutilizarlo mas tarde. Muy potente, ya que con el tabulador nos muestra todas las disponibles, por si te olvidas del nombre
- sqltune: podemos pedirle a oracle que analize una query y nos haga recomendaciones para mejorar el rendimiento
Para poder usar pysql, necesitamos hacer la instalación de varios componente imprescindibles
- Cliente oracle 10g o 11g
- Python
- cx_oracle modulo python de acceso a oracle
No voy a explicar como se instala el cliente oracle, eso necesitaría otro post, asi que si teneis problemas en esta parte, mirar la documentación de oracle. Se necesita el cliente completo, ya que para compilar cx_oracle, necesitamos los headers y tener configuradas correctamente las variables de entorno.
vmalaga@lnxport:~$ vi .bashrc
ORACLE_HOME=/home/vmalaga/oracleclient_1 PATH=$PATH:$ORACLE_HOME/bin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib CLASSPATH=$CLASSPATH:$ORACLE_HOME/jlib export ORACLE_HOME PATH LD_LIBRARY_PATH CLASSPATH
Ahora nos descargamos el modulo cx_oracle y lo instalamos:
wget "http://downloads.sourceforge.net/project/cx-oracle/5.1/cx_Oracle-5.1.tar.gz" vmalaga@lnxport:~$ tar xvfz cx_Oracle-5.1.tar.gz vmalaga@lnxport:~$ cd cx_Oracle-5.1/ vmalaga@lnxport:~/cx_Oracle-5.1$ python setup.py build vmalaga@lnxport:~/cx_Oracle-5.1$ sudo python setup.py install
Si todo a ido bien ya tenemos instalado el modulo, ahora instalamos pysql
vmalaga@lnxport:~$ wget "http://downloads.sourceforge.net/project/pysql/pysql/0.15/pysql-0.15.tar.gz" vmalaga@lnxport:~$ tar xvfz pysql-0.15.tar.gz vmalaga@lnxport:~/pysql-0.15$ cd pysql-0.15/ vmalaga@lnxport:~/pysql-0.15$ python setup.py build vmalaga@lnxport:~/pysql-0.15$ sudo python setup.py install
Ya tenemos instalado pysql, ahora solo nos queda arrancarlo:
vmalaga@lnxport:~$ pysql
Welcome to pysql shellType "help" for some help.Use Tab for completion (not connected) conn sys/pass@sid as sysdba user@sid user@sid help
Con el comando help nos muestra los comandos disponibles, que son muchos y los explicare en la próxima entrega.