martes, 13 de octubre de 2009

Exportar a CSV desde MySQL vía Bash

Desde hace unos meses trabajo casi a diario con uno de los mejores LMS libres : Moodle. En un de los servidores web tenemos instalado Drupal, un buen CMS con un montón de funcionalidades por descubrir(al menos para mí). Pues bien, necesito que todos los usuarios que tenga cuenta en el webserver de Drupal, tengan automáticamente también una cuenta en Moodle. Una de las características que más me gusta de Moodle es la versatilidad en cuanto a la autenticación de usuarios : LDAP, Radius,Email, POP3... Tiene una opción muy útil, que permite subir los usuario en formato CSV. Si logramos extraer los campos necesarios de la BBDD Drupal tendremos la mitad de la tarea finiquitada. De momento sólo he conseguido automatizar la exportación a CSV. Evidentemente el script está muy poco trabajado, pero funciona.

#!/bin/bash
rm -rf /tmp/csv-tmp.txt
mysql --user=drupal --password=mipass drupal<SELECT name,pass,mail,name,language INTO OUTFILE'/tmp/csv-tmp.txt' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM users WHERE uid != 0;
EOFMYSQL
echo "username,password,email,firstname,lastname" > /tmp/csv-final.txt
cat /tmp/csv-tmp.txt >> /tmp/csv-final.txt
cp /tmp/csv-final.txt /home/alberto/Escritorio/csv-final.txt
chown alberto /home/alberto/Escritorio/csv-final.txt

No hay comentarios: