Accueil > Ressources > UCCASS > Fonctionnement du fichier uccass_export.sh

Fonctionnement du fichier uccass_export.sh

Permettant l’exportation des données en .csv depuis UCCASS

vendredi 21 mai 2010, par FAHRASMANE, Timothée B., UBEDA

Dans l’article "Exporter les données du questionnaire UCCASS", nous avons vu comment exporter les données d’un questionnaire UCCASS dans un fichier .csv. Pour cela, nous utilisions un fichier Bash uccass_export.sh : nous allons dans cet article voir comment fonctionne plus précisément ce fichier.

Ce programme peut être résumé en plusieurs étapes :
- Nous allons tout d’abord indiquer où aller chercher les données.
- Nous allons ensuite lancer des requêtes SQL visant à récupérer les données désirées, puis le résultat va être redirigé dans un fichier .csv.
- Ce résultat obtenu va alors être mis en forme par l’intermédiaire d’un autre fichier, rel2mat.pl
- Nous allons enfin exporter la légende qui nous permettra d’utiliser les données exportées

Il faut tout d’abord renseigner l’emplacement des données. Les lignes de code suivantes serviront donc à indiquer le nom d’utilisateur pour accéder à cette base de données, le mot de passe requis, le nom de la base de données et enfin le numéro du questionnaire concerné par l’exportation.

db_user= ...
db_password= ...
db_database= DB_...
sid= ...

Il faut ensuite sélectionner dans la base de données les informations que l’on veut obtenir. Il faut aussi savoir que UCCASS différencie deux types de réponses : des réponses "numériques" (ce sont des questions avec des réponses prédéfinies, qui sont codées par des chiffres), et des réponses "texte" qui sont elles plus ouvertes. Il faudra donc procéder avec 2 requêtes afin d’exporter l’ensemble des données.

Nous allons dans un premier temps sélectionner les réponses "numériques" avec la requête SQL suivante, que nous allons rediriger par l’intermédiaire du symbole ">" dans un fichier temporaire rel.csv :

mysql -u $db_user -p$db_password $db_database -e "SELECT R.sequence, Q.qid, AV.numeric_value FROM uccassanswer_values AS AV, uccassresults AS R, uccassquestions AS Q WHERE R.sid = 50 and R.qid=Q.qid and R.avid=AV.avid" > uccass_export/tmp/rel.csv

Nous allons ensuite lancer une nouvelle requête afin de récupérer les données "texte", que nous allons rediriger dans le même fichier de précédemment. On va cependant utiliser ce symbole ">>" afin de ne pas écraser les données précédentes.

mysql -u $db_user -p$db_password $db_database -e "SELECT R.sequence, Q.qid, R.answer FROM  uccassresults_text AS R, uccassquestions AS Q WHERE R.sid = 50 and R.qid=Q.qid" >> uccass_export/tmp/rel.csv

Nous avons donc pour l’instant un fichier rel.csv contenant les données brutes. Mais ces données telles qu’elles seront difficiles à exploiter : nous allons donc les mettre en forme à l’aide du programme rel2mat.pl qui se lance comme suit :

perl uccass_export/rel2mat.pl uccass_export/tmp/rel.csv > uccass_export.csv

On a donc obtenu un fichier définitif uccass_export.csv, contenant les données désirées sous forme de matrice plus facilement exploitable.

Il nous faut enfin récupérer la légende afin de pouvoir utiliser au mieux nos données : c’est ce que fait cette partie du programme.

echo "Questionnaire"> legend.csv

echo "------------------" >> legend.csv

echo "QCM" >> legend.csv

mysql -u $db_user -p$db_password $db_database -e "SELECT DISTINCT Q.qid AS qid, AV.numeric_value AS answer, AV.value, Q.question FROM uccassquestions AS Q, uccassanswer_values AS AV, uccassresults AS R WHERE R.sid = 50 AND Q.qid=R.qid AND R.avid=AV.avid ORDER BY qid, answer " >> legend.csv

echo "------------------" >> legend.csv

echo "Open questions" >> legend.csv

mysql -u $db_user -p$db_password $db_database -e "SELECT DISTINCT Q.qid AS qid, Q.question FROM uccassquestions AS Q, uccassresults_text AS R WHERE R.sid = 50 AND Q.qid=R.qid ORDER BY qid" >> uccass_legend.csv

Au final, nous avons donc les fichiers suivants dans notre dossier :
- un fichier uccass_export.csv qui contient l’ensemble des données mises en forme
- un fichier uccass_legend.csv contenant la légende nécessaire à l’utilisation des données

Remarque : dans un terminal, la commande suivante permet de lire le programme BASH en couleur, ce qui facilite la lisibilité :

emacs uccass_export.sh