Add another method to prepare the import tables

This commit is contained in:
nobohan 2024-09-17 15:37:16 +02:00
parent 9c90e5ac07
commit db52c72d22
2 changed files with 112 additions and 16 deletions

View File

@ -14,8 +14,8 @@ Le client a rempli le canevas. Une relecture du fichier est toujours nécessaire
Le fichier se compose de plusieurs feuilles, chacune doit être sauvée au format csv. Le fichier se compose de plusieurs feuilles, chacune doit être sauvée au format csv.
Pour préparer les fichiers on va: Pour préparer les fichiers on va:
- nettoyer le fichier pour ne laisser en étiquette que les noms de colonnes en anglais. - nettoyer le fichier pour ne laisser en étiquette que les noms de colonnes en anglais. Il faut donc supprimer les 4 premières lignes de chaque fichier + la 6ème ligne.
- 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 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, - ajouter les doublequote lors de la sauvegarde du csv,
- enlever tous les line breaks et caractères spéciaux. - enlever tous les line breaks et caractères spéciaux.
@ -61,6 +61,23 @@ La meilleure méthode pour moi est de réaliser cette étape en local avec phpst
- export data > extractor: SQL-insert-multirow > copy to clipboard - export data > extractor: SQL-insert-multirow > copy to clipboard
- coller les données dans `<client>-data.sql` - coller les données dans `<client>-data.sql`
### 2.b Avec des fonctions Postgresql
On peut aussi utiliser la fonction `\copy` de psql pour charger un fichier csv dans les tables temporaires du schéma "import".
Tout d'abord, les tables du schéma "import" doivent être préparées avec le script `prepare-import.sql`.
Puis on importe les 4 fichiers csv.
```bash
psql chill-import
chill-import=# \copy "import".choix_personnes FROM 'choix_personnes.csv' DELIMITER ',' CSV HEADER
chill-import=# \copy "import".personnes FROM 'personnes.csv' DELIMITER ',' CSV HEADER
chill-import=# \copy "import".choix_periodes FROM 'choix_periodes.csv' DELIMITER ',' CSV HEADER
chill-import=# \copy "import".periodes FROM 'periodes.csv' DELIMITER ',' CSV HEADER
```
## 3. Import du schéma 'import' sur le serveur (safran) ## 3. Import du schéma 'import' sur le serveur (safran)
- transférer le fichier `<client>-data.sql` sur le serveur (avec scp): - transférer le fichier `<client>-data.sql` sur le serveur (avec scp):

79
sql/prepare-import.sql Normal file
View File

@ -0,0 +1,79 @@
CREATE TABLE "import".choix_personnes (
civility varchar(50) NULL,
gender varchar(50) NULL,
maritalstatus varchar(50) NULL,
country varchar(50) NULL,
household_composition_type varchar(50) NULL,
household_position varchar(50) NULL
);
CREATE TABLE "import".personnes (
civility varchar(50) NULL,
lastname varchar(50) NULL,
firstname varchar(50) NULL,
gender varchar(50) NULL,
gendercomment varchar(50) NULL,
nationality varchar(50) NULL,
memo varchar(50) NULL,
birthdate varchar(50) NULL,
place_of_birth varchar(50) NULL,
countryofbirth varchar(50) NULL,
deathdate varchar(50) NULL,
email varchar(50) NULL,
phonenumber varchar(50) NULL,
mobilenumber varchar(50) NULL,
contactinfo varchar(50) NULL,
street varchar(50) NULL,
extra varchar(50) NULL,
streetnumber varchar(50) NULL,
postcode varchar(50) NULL,
country varchar(50) NULL,
validfrom varchar(50) NULL,
maritalstatus varchar(50) NULL,
maritalstatuscomment varchar(50) NULL,
numberofchildren integer NULL,
household_composition_type varchar(50) NULL,
household_position varchar(50) NULL,
household_startdate varchar(50) NULL
);
CREATE TABLE "import".choix_periodes (
closingmotive varchar(50) NULL,
origin varchar(50) NULL,
acp_scopes varchar(50) NULL,
job varchar(50) NULL,
"user" varchar(50) NULL,
parent varchar(50) NULL,
enfant varchar(50) NULL,
acp_social_issues varchar(50) NULL,
work_social_action varchar(50) NULL,
street varchar(128) NULL,
extra varchar(50) NULL,
streetnumber integer NULL,
postcode integer NULL,
country varchar(50) NULL
);
CREATE TABLE "import".periodes (
nom varchar(50) NULL,
openingdate varchar(50) NULL,
closingdate varchar(50) NULL,
closingmotive varchar(50) NULL,
origin varchar(50) NULL,
remark integer NULL,
intensity varchar(50) NULL,
referrer varchar(50) NULL,
job varchar(50) NULL,
acp_scopes varchar(50) NULL,
"address" varchar(50) NULL,
personlocation varchar(50) NULL,
addresslocation varchar(50) NULL,
acp_socialissues varchar(50) NULL,
work_socialaction varchar(50) NULL,
comment1_content varchar(50) NULL,
comment2_content varchar(50) NULL,
comment3_content varchar(50) NULL,
comment4_content varchar(50) NULL,
comment5_content varchar(50) NULL
);