Libre office calc requéter une base MySQL
::TOC::
On va voir dans ce billet comment charger dans le tableur de libre office des données provenant d'une base MySQL. Le PC client est une kubuntu. Le serveur de bdd est une débian (mais ça ça n'a pas d'importance).
Prérequis:
- Un serveur MySQL installé
- Libre office installé sur le poste client
Permettre l'accès distant sur le serveur MySQL.
Editez le fichier /etc/mysql/my.cnf
Afin de permettre les connexions depuis d'autres ordinateurs modifiez la ligne bind-adress par celle-ci
bind-address = 0.0.0.0
#Redémarrez mysql /etc/init.d/mysql restart #puis connectez vous à mysql mysql -u root -p
Ajoutez un utilisateur ayant les droits depuis un poste distant (remplacer localhost par % dans la commande GRANT)
#pour un accès en lecture seulement: GRANT SELECT ON votrebase.* TO 'user'@'%' IDENTIFIED BY 'votreMotDePasse'; #Si vous souhaitez un acces total à la base: GRANT ALL ON votrebase.* TO 'user'@'%' IDENTIFIED BY 'votreMotDePasse';
Si nécessaire, ouvrez le pare-feu pour permettre les connexions mysql (port 3306). Voici un exemple si votre firewall est à base d'iptables et que votre LAN est 192.168.0.* :
iptables -A INPUT -p tcp --destination-port 3306 -m iprange --src-range 192.168.0.1-192.168.0.254 -j ACCEPT
Sur le poste client
Installer le connecteur sur le client
sudo apt-get install libreoffice-mysql-connector
Voila, on a tout ce qu'il faut. L'application libre office base servira d'intermédiaire entre calc et le serveur mysql. Depuis un microsoft office. MS query aurait servi d'intermédiaire mais il est plus transparent que oooBase,.
Ouvrez libre office -> nouveau document-base de donnée.
Dans l'assistant de base de données, choisissez "Se connecter à une base de donnée existante", et "Mysql" comme ça:
"Connecter directement" (c'est plus simple)
Ma base s'appelle tinaderp. Adaptez en fonction de la votre, ainsi que l'IP du serveur:
Puis l'user Mysql:
A l'étape suivante, surtout cochez "Oui, je souhaite que l'assistant référence la base de données" Ce sera beaucoup plus facile pour retrouver les données dans le tableur puis cliquez sur terminer
Il vous demande d'enregistrer le fichier. Je vous conseille de donner au fichier le nom de votre base de donnée.
On arrive sur cette interface:
Créer quelques requêtes
Mon objectif ici est de pouvoir faire des statistiques. La bdd étant relativement brute. Si j'importe la base de données direct dans un tableur, ça va être pénible. (Ceux qui ont fait déjà des formules de recherches matricielles dans un tableur me comprendront). Je vais donc créer les requêtes SQL qui me feront les sous totaux, les décomptages tout en liant les tables afin d'avoir les intitulés et pas les clés. Bref, je veux avoir les tableaux que je n'aurai qu'à sélectionner pour établir les graphiques. Si ce n'est pas votre cas, que le contenu des tables de façon brute vous suffit. passez directement au chapitre suivant.
Requetes -> Creer une requête en mode SQL
Testez la requête puis enregistrez la. je lui donne le nom sommeParTypeParMois Enregistrez votre fichier de base de données.
Dans le tableur scalc
Données -> table et pilote -> Créer
Source de données enregistrée sous libre office
- Sélectionnez votre base (qui a le nom du fichier base).
- Le type: feuille si vous voulez une table brute, ou requête si vous voulez récupérer les données d'une requête.
Organisez comme il faut colonnes lignes et données en faisant du glisser déposer.