Objectif :
Script qui permet d’exporter tous les contact de FOP2 (sqlite3) vers une table mysql « contact » identique.
Table mysql
– Créer une base de donnée && un utilisateur qui va bien
CREATE DATABASE `contact` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'contact'@'localhost' IDENTIFIED BY 'password'; GRANT USAGE ON `contact`.* TO 'contact'@'localhost' IDENTIFIED BY 'password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , INDEX , ALTER , CREATE TEMPORARY TABLES , CREATE VIEW , SHOW VIEW , CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON `contact` . * TO 'contact'@'localhost';
– créer une table contact
CREATE TABLE contact ( id integer primary key auto_increment , name varchar(35), last_name varchar(35), telefono varchar(12), extension varchar(7), email varchar(30), iduser int, picture varchar(50), address varchar(100), company varchar(30), notes varchar(200), status varchar(30) );
Script
Dans ledossier /var/www/replicationContact créer un fichier export.sh
Pour info j’ai du utiliser le mot de passe root car dans le script ce user ne fonctionnait pas….
#!/bin/sh date=`date "+%F-%H%M%S"` localDir=/var/www/replicationContact dbDir=/var/www/db dbLogin=contact dbPswd='password' #suppression du csv rm $localDir/transfert.csv #export sqlite3 en csv sqlite3 /var/www/db/address_book.db <<! .mode csv .output /var/www/replicationContact/transfert.csv select * from contact; .exit ! #import du csv dans mysql mysql --user=$dbLogin --password=$dbPswd --database=contact --execute="TRUNCATE TABLE contact.contact; LOAD DATA INFILE '/var/www/replicationContact/transfert.csv' INTO TABLE contact.contact FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n'";
Cron
Penser à faire un cron qui excute export.sh tous les jours.
Vérifier les droits sur le dossier replicationContact et export:
chmod 777 replicationContact chmod 644 export.sh
nano /etc/crontab
10 1 * * * root /bin/sh /var/www/replicationContact/export.sh
Astuce pour tester la mise en place on peut lancer le cron toutes les minutes :
*/1 * * * * root /bin/sh /var/www/replicationContact/export.sh