1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| #!/bin/sh
#Demande de toutes les informaions dont nous avons besoin
echo -n "Entrez le nom d'utilisateur PostgreSQL : "
read UserPG
#Vérification qu'un utilisateur à bien été renseigné pour la connection à PostgreSQL.
case $UserPG in
"") echo "Pas d'utilisateur PostgreSQL définit\n"
exit 1;; #exit shell script
* ) echo "Bienvenu $UserPG\n";;
esac
echo -n "Mot de passe : "
read PGpassword
#Vérification qu'un mot de passe à bien été renseigné pour la connection à PostgreSQL.
case $PGpassword in
"") echo "Pas de mot de passe PostgreSQL définit\n"
exit 1;; #exit shell script
*) echo "Votre mot de passe à bien été pris en compte\n";;
esac
echo -n "Ip ou non du serveur PostgreSQL? "
read PGhostname
#Vérification qu'une IP ou un nom machine à bien été renseignée pour la connection à PostgreSQL.
case $PGhostname in
"") echo "Pas d'hôte PostgreSQL définit\n"
exit 1 ;; #exit shell script
*) echo "L'hôte ou l'IP PostgreSQL est $PGhostname\n";;
esac
echo -n "Port du serveur PostgreSQL? "
read port_num
#Vérification qu'un port à bien été renseigné pour la connection à PostgreSQL.
case $port_num in
"") port_num=5432
echo "Le port par défaut $port_num sera utilisé\n";;
*) echo "Le port par défaut $port_num sera utilisé\n";;
esac
echo -n "Nom de la base de donnée pour Appli? "
read appli_db
#Vérification qu'une base de donnée à bien été renseignée pour travailler dessus.
case $appli_db in
"" ) echo "Pas de base de donnée PostgreSQL définit\n"
exit 1;; #exit shell script
*) echo "L'hôte ou l'IP PostgreSQL est $PGhostname\n";;
esac
#Création du fichier permettant de s'identifier au serveur PostgreSQL.
touch $HOME/.pgpass
#Attribution des droits sur le fichier, pas d'autre choix que 0600, si non, ca ne fonctionne pas.
chmod 0600 $HOME/.pgpass
#Remplissage du fichier avec les bons parametres
echo "$PGhostname:$port_num:$appli_db:$UserPG:$PGpassword" > $HOME/.pgpass
#Récupération du répertoir courant
csv_DirectoryLocation=$(pwd)
echo -n "Le fichier CSV se trouve-t-il dans le répertoire suivant? \n $csv_DirectoryLocation : [Oui] ou [Non]"
read answer
#Chargement du chemin d'acces au fichier CSV dans la variable "csv_location". Le fichier CSV doit s'appeler "asso_tiers_groupe.csv" => Si non, fonctionne pas.
case $answer in
Oui|OUI|oui|O|o ) csv_location=$csv_DirectoryLocation/asso_tiers_groupe.csv
echo "Le fichier se trouve dans: $csv_location";;
Non|NON|non|N|n ) echo -n "Dans quel répertoire se trouve le fichier asso_tiers_regie.csv?\n"
read csv_EntryLocation
csv_location=$csv_EntryLocation/asso_tiers_groupe.csv
echo "Le fichier se trouve donc bien dans: $csv_location\n";;
*) "Au revoir...\n"
exit 1 ;;
esac
#Lecture du fichier CSV ligne par ligne.
cat $csv_location |while read ligne
do
echo $ligne
code_tiers_csv=`echo $ligne | awk -F";" '{ print $1 }'`
echo "code_tiers_csv = $code_tiers_csv"
libelle_groupe_csv=`echo $ligne | awk -F";" '{ print $2 }'`
echo "libelle_groupe_csv = $libelle_groupe_csv"
#Connection au serveur PostgreSQL
# INSERT into = Insertion des données dans la bonne table.
# SELECT = selectionne les données à intégrer.
psql -h $PGhostname -p $port_num $appli_db -U $UserPG << EOF
INSERT into lorrainng_role.rasso_grp_tiers (id_groupe, numbenef, idg_regie)
SELECT group_tiers.id, tiers.numbenef, tiers.idg_regie
FROM lorrainng_role.rhabitue AS tiers, lorrainng_role.rgroupe_tiers AS group_tiers
WHERE tiers.numbenef IN (SELECT numbenef FROM lorrainng_role.rhabitue WHERE code_tiers = '$code_tiers_csv' AND numbenef_ref='0')
AND tiers.idg_regie IN (SELECT idg_regie FROM lorrainng_role.rhabitue WHERE code_tiers = '$code_tiers_csv')
AND group_tiers.id IN (SELECT id FROM lorrainng_role.rgroupe_tiers WHERE libelle = '$libelle_groupe_csv' AND idg_regie IN (SELECT idg_regie FROM lorrainng_role.rhabitue WHERE code_tiers = '$code_tiers_csv' AND numbenef_ref='0'));
EOF
done
#Efface le mot de passe dans la variable et le fichier.
PGpassword=""
rm $HOME/.pgpass |
Partager