add readme
This commit is contained in:
parent
290a9b917f
commit
f3bda2a22e
67
README.md
Normal file
67
README.md
Normal file
@ -0,0 +1,67 @@
|
||||
CHILL - Reprise de données
|
||||
==========================
|
||||
|
||||
Ce dépôt contient un script d'import qui s'applique à un canevas excel présenté au client. Le client remplit le fichier excel, puis le script insère les données dans la base de donnée.
|
||||
|
||||
L'opération est semi-automatique et réduit considérablement le temps dédié à l'import en structurant le format des données en entrée. Par contre il y a toujours une série de manipulations, pour insérer les données correctement.
|
||||
|
||||
Ces manipulations sont décrites ici.
|
||||
|
||||
Le client a rempli le canevas. Une relecture du fichier est toujours nécessaire afin de repérer les éventuelles irrégularités.
|
||||
|
||||
## 1. Préparer les fichiers csv
|
||||
|
||||
Le fichier se compose de plusieurs feuilles, chacune doit être sauvée au format csv.
|
||||
- Il faut nettoyer le fichier pour ne laisser en étiquette que les noms de colonnes en anglais.
|
||||
- Il faut ajouter une colonne de contôle en fin de ligne, par sécurité. Par exemple une colonne 'endcol' qui contient pour chaque cellule 'endrow'.
|
||||
- Il faut ajouter les doublequote lors de la sauvegarde du csv,
|
||||
- Il faut enlever tous les line breaks et caractères spéciaux.
|
||||
|
||||
```bash
|
||||
# Exemple de remplacements exécutés sur les fichiers csv pour un import spécifique :
|
||||
$ sed -e :1 -e '$q' -e "/$CR\$/b" -e 'N;s/\n//;b1' < file.2.csv > file.3.csv
|
||||
$ sed -e 's#"end"#"end"\n#g' < file.3.csv > file.4.csv
|
||||
|
||||
# Exemple pour un autre import:
|
||||
$ cat file2.csv | sed -e 'N; s#_x000D_##g; s#\n##g; s/$CR//g' | tr "\n" " " > file3.csv
|
||||
$ sed -e 's#"endcol"#"endcol"\n#g; s#"endrow"#"endrow"\n#g' < file3.csv > file4.csv
|
||||
$ sed -e 's#^,##g; s#^ ##g' < file4.csv > file5.csv
|
||||
```
|
||||
|
||||
## 2. Insérer les csv dans la base de donnée
|
||||
|
||||
On va insérer chaque feuille csv comme table à part entière d'un nouveau schéma `import`. On aura:
|
||||
- import.choix_personnes
|
||||
- import.personnes
|
||||
- import.choix_periodes
|
||||
- import.periodes
|
||||
|
||||
Pour réaliser cet import, on peut utiliser des outils tels que `pgfutter`, mais celui-ci peut s'avérer capricieux selon le fichier.
|
||||
La meilleure méthode pour moi est de réaliser cette étape en local avec phpstorm, puis d'exporter le schéma `import` avec pg_dump avant de le transférer sur le serveur.
|
||||
|
||||
### 2.a Manipulations dans phpstorm
|
||||
|
||||
#### Importer le csv dans la db
|
||||
|
||||
- ouvre le fichier csv > passe en onglet text > edit as table > first row is header > open table
|
||||
- import to database > régler target/schema et table
|
||||
|
||||
#### Exporter en sql
|
||||
|
||||
- depuis la table insérée: export data > extractor: SQL-insert-multirow
|
||||
|
||||
|
||||
## 3. Import du schéma 'import' sur le serveur (safran)
|
||||
|
||||
- transférer le fichier SQL sur le serveur (avec scp)
|
||||
- faire une sauvegarde de la base sur laquelle on va réaliser l'insertion
|
||||
- importer le fichier sql sur la base cible
|
||||
- vérifier que le schéma import est en place
|
||||
|
||||
## 4. Exécution du script de migration
|
||||
|
||||
Se fait dans la console postgresql, en tant que user postgres, en étant connecté à la base de donnée cible.
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user