TP de BD avec VIM

De Ensiwiki
Aller à : navigation, rechercher

TP de BD avec VIM

Les TP de BD se font en principe sous SQLPlus... Les requêtes SQL en ligne de commande, sans possibilité d'édition, vous aimez ? Pas moi. Heureusement il est possible de TOUT faire depuis Vim. Plusieurs plugins existent, notamment:

  • DBExt : permet d'ajouter des fonctionnalités d'intellisense lors de l'écriture de requêtes SQL ! Permet également d'éxécuter les requêtes depuis VIM !
  • sqlplus : ce plugin offre plus ou moins les même fonctionnalités que DBExt, au détail près qu'il est spécifique à SQL*Plus d'Oracle (comme son nom l'indique très bien).


Configurations

DBExt

Téléchargez le .zip et dézippez le dans $HOME/.vim/.

Dans votre .vimrc, ajoutez ces lignes :

let g:dbext_default_type = 'ORA'         "Les TP se font sur Oracle
let dbext_default_user = 'votre-login'   "Login 
let dbext_default_passwd = 'votre-mdp'   "Mot de passe (SQL != mdp ensibm à priori)
let dbext_default_host = 'ensioracle1'   "À changer selon le serveur à utiliser
let dbext_default_srvname = 'ensioracle1'  "idem

DBExt propose une foule d'options ; je vous conseille de lire la doc pour en savoir plus.

sqlplus

Téléchargez l'unique fichier sqlplus.vim, placez le dans le répertoire $HOME/.vim/plugin (à créer si besoin). Il n'y a rien à ajouter dans votre ~/.vimrc, si ce n'est (re)définir votre 'mapleader', faisant partie de la plupart des commandes proposées par ce plugin. Si ce n'est pas déjà fait, je vous conseille d'ajouter cette ligne dans votre .vimrc:

let mapleader=',' " bien entendu vous pouvez mettre n'importe quel autre caractère au lieu de ","

Ce plugin offre plusieurs fonctionnalités dont les plus importantes sont détaillées dans la section suivante, se référer à la doc ou lire le script ~/.vim/sqlplus.vim pour plus de détails.

Exemples et utilisation

DBExt

Si vous utilisez Gvim, DBExt ajoute un menu en haut de la fenêtre permettant d'exécuter la requête sous la souris, de trouver des informations sur la base / table, etc. Ceci dit, tout est bien sûr faisable en ligne de commande...

N.B. : Toutes les commandes DBExt commencent par <LEADER> = \ par défaut. Pour paramétrer cette commande, ajoutez un :

let mapleader = "&"

... par exemple, à votre .vimrc.

sqlplus

Ce plugin vous demandera de vous authentifier à la première invocation d'une commande dans un fichier, la connexion persistera tant que le fichier reste ouvert.

En mode normal:

  • <Leader>ss (donc ',ss' dans notre cas) permet d'exécuter la ligne sous le curseur. Faire attention cat cette commande ne marche pas si la ligne se termine par un point-virgule.
  • <F8> permet d’exécuter la requête SELECT sous le curseur. Cette fois, la requête peut être sur un nombre quelconque de lignes tant qu'elles se terminent par ";".

N.B.: Ce plugin souffre d'un léger problème non encore résolu relatif aux transactions SQL (voir le dépôt Github de son actuel mainteneur pour d'éventuelles contributions). Évitez donc de l'utiliser si votre fichier sql fait des appels à autocommit (e.g.: 'set autocommit on', 'set autocommit off'), donc a fortiori pendant le TP sur les transactions.