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