update readme
This commit is contained in:
parent
f3bda2a22e
commit
cea5190174
75
README.md
75
README.md
@ -3,7 +3,7 @@ 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.
|
||||
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 préparer et insérer les données correctement.
|
||||
|
||||
Ces manipulations sont décrites ici.
|
||||
|
||||
@ -12,10 +12,12 @@ Le client a rempli le canevas. Une relecture du fichier est toujours nécessaire
|
||||
## 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.
|
||||
|
||||
Pour préparer les fichiers on va:
|
||||
- nettoyer le fichier pour ne laisser en étiquette que les noms de colonnes en anglais.
|
||||
- ajouter une colonne de contôle en fin de ligne, par sécurité. Par exemple une colonne 'endcol' qui contient pour chaque cellule 'endrow'.
|
||||
- ajouter les doublequote lors de la sauvegarde du csv,
|
||||
- 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 :
|
||||
@ -41,27 +43,70 @@ La meilleure méthode pour moi est de réaliser cette étape en local avec phpst
|
||||
|
||||
### 2.a Manipulations dans phpstorm
|
||||
|
||||
- S'il n'existe pas, créer le schéma `import`; s'il existe, s'assurer qu'il ne contient pas de tables ni de données.
|
||||
#### 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
|
||||
|
||||
- ouvre le fichier csv > passe en onglet text > edit as table > set options:
|
||||
- cocher 'first row is header'
|
||||
- 'null value text': undefined (pas de champs null dans la table, mais un texte vide)
|
||||
- then > open table
|
||||
- import to database > set options:
|
||||
- régler target/schema: import
|
||||
- et table: même nom que le csv
|
||||
- DDL: TEXT pour tous les champs
|
||||
- then > import
|
||||
#### Exporter en sql
|
||||
|
||||
- depuis la table insérée: export data > extractor: SQL-insert-multirow
|
||||
|
||||
- créer un fichier `<client>-data.sql` vide
|
||||
- depuis chaque table du schéma `import`:
|
||||
- copier le DDL de la table dans le fichier (s'assurer d'ajouter le préfixe `import.` sur chaque requête)
|
||||
- export data > extractor: SQL-insert-multirow > copy to clipboard
|
||||
- coller les données dans `<client>-data.sql`
|
||||
|
||||
## 3. Import du schéma 'import' sur le serveur (safran)
|
||||
|
||||
- transférer le fichier SQL sur le serveur (avec scp)
|
||||
- transférer le fichier `<client>-data.sql` sur le serveur (avec scp):
|
||||
```bash
|
||||
$ scp cyclo-data.sql debian@safran:~/data/tmp/
|
||||
```
|
||||
|
||||
- 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
|
||||
```bash
|
||||
debian@safran:~/bin$ bash backup_now_db.sh 5436 cycloprod
|
||||
debian@safran:~/bin$ ls -l dump/ | tail -1
|
||||
-rw-r--r-- 1 postgres postgres 234954230 Mar 15 10:40 20230315-104003_cycloprod.sql
|
||||
```
|
||||
|
||||
- importer le fichier sql sur la base cible: `$ sudo su postgres -c 'psql -p5436'`
|
||||
```sql
|
||||
postgres=# \c cycloprod
|
||||
You are now connected to database "cycloprod" as user "postgres".
|
||||
|
||||
cycloprod=# \dt import.*
|
||||
Did not find any relation named "import.*".
|
||||
|
||||
cycloprod=# CREATE SCHEMA import;
|
||||
|
||||
-- insertion
|
||||
cycloprod=# \i '/home/debian/data/tmp/cyclo-data.sql'
|
||||
|
||||
-- vérifier que le schéma import est en place
|
||||
cycloprod=# \dt import.*
|
||||
List of relations
|
||||
Schema | Name | Type | Owner
|
||||
--------+-----------------+-------+----------
|
||||
import | choix_periodes | table | postgres
|
||||
import | choix_personnes | table | postgres
|
||||
import | periodes | table | postgres
|
||||
import | personnes | table | postgres
|
||||
(4 rows)
|
||||
```
|
||||
|
||||
## 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.
|
||||
|
||||
On joue pas-à-pas les blocs de la section 'Up' du script `sql/import.sql`
|
||||
|
||||
## Tips
|
||||
|
||||
- Dans phpstorm, si on veut renommer le schéma pour ne pas tout mélanger, il vaut mieux faire 'Modify schema', car 'Rename' va faire des remplacements partout
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user