feat: Enhance CSV import process and data cleanup
- Added support for importing 'periodes' data and adjusted related SQL scripts. - Introduced a new SQL preparation script to set up the import schema. - Updated the import_all_csv.sh script to handle new CSV files and tables. - Implemented checks for required SQL files and improved error handling. - Modified data types and structures in the import process for better consistency. - Created a new remove-import-data.sql script to clean up imported data effectively. - Enhanced the handling of postal codes and addresses in the import logic. - Added comments and structured the SQL scripts for better readability and maintainability.
This commit is contained in:
@@ -12,6 +12,13 @@
|
||||
--
|
||||
-- vérifier les étiquettes de colonnes: user-> referrer, acp_social_issues-> acp_socialissues
|
||||
|
||||
-- Exécution du bloc DOWN uniquement si demandé explicitement:
|
||||
-- psql -v run_down=1 -f sql/import.sql
|
||||
\if :{?run_down}
|
||||
\else
|
||||
\set run_down 0
|
||||
\endif
|
||||
|
||||
|
||||
-- 1. Adjust Type cast for id columns
|
||||
ALTER TABLE import.personnes ALTER COLUMN id TYPE INTEGER USING (id::integer);
|
||||
@@ -355,26 +362,28 @@ INSERT INTO chill_person_person_center_history (id, person_id, center_id, startd
|
||||
-- a) add new columns
|
||||
ALTER TABLE import.personnes ADD column address_id BIGINT;
|
||||
ALTER TABLE import.personnes ADD column address_ref_id BIGINT;
|
||||
ALTER TABLE import.personnes ADD column postcode_id BIGINT[];
|
||||
ALTER TABLE import.personnes ADD column postcode_arr BIGINT[];
|
||||
|
||||
-- special command to extract postcode values in text
|
||||
ALTER TABLE import.personnes ADD COLUMN postcode1 TEXT;
|
||||
UPDATE import.personnes SET postcode1=SUBSTRING(postcode FROM '\y\d{5}\y') WHERE postcode!='';
|
||||
UPDATE import.personnes
|
||||
SET postcode1 = NULLIF(regexp_replace(coalesce(postcode, ''), '\D', '', 'g'), '')
|
||||
WHERE coalesce(postcode, '') != '';
|
||||
|
||||
-- b) find and add postal code references. Check missing correspondances (if you can)
|
||||
UPDATE import.personnes
|
||||
SET postcode_id = (
|
||||
SELECT pc.id
|
||||
SET postcode_arr = (
|
||||
SELECT array_agg(pc.id)
|
||||
FROM chill_main_postal_code AS pc
|
||||
WHERE pc.canonical ILIKE import.personnes.postcode
|
||||
AND pc.origin = 0
|
||||
WHERE pc.code = import.personnes.postcode1
|
||||
AND pc.origin = 0
|
||||
);
|
||||
--SELECT * FROM import.personnes as ip WHERE ip.postcode_id IS NULL -- missing correspondances
|
||||
--SELECT * FROM import.personnes as ip WHERE ip.postcode_arr IS NULL -- missing correspondances
|
||||
|
||||
-- c) find and add reference addresses. Check missing correspondances (if you can)
|
||||
UPDATE import.personnes AS ip SET address_ref_id = cmar.id FROM chill_main_address_reference AS cmar
|
||||
WHERE
|
||||
cmar.postcode_id = ip.postcode_id
|
||||
cmar.postcode_id = ANY(ip.postcode_arr)
|
||||
AND similarity(trim(ip.street), trim(cmar.street)) > 0.6
|
||||
AND trim(ip.streetnumber) = trim(cmar.streetnumber);
|
||||
--SELECT * FROM import.personnes as ip WHERE ip.address_ref_id IS NULL -- missing correspondances
|
||||
@@ -384,7 +393,7 @@ UPDATE import.personnes SET address_id = nextval('chill_main_address_id_seq');
|
||||
|
||||
-- e) insert reference address into chill_main_addresses
|
||||
INSERT INTO chill_main_address (id, postcode_id, street, streetnumber, extra, validFrom, addressreference_id, refstatus, point, createdat, updatedat, createdby_id, updatedby_id)
|
||||
SELECT address_id, postcode_id, street, coalesce(streetnumber, ''), coalesce(extra,''),
|
||||
SELECT address_id, postcode_arr[1], street, coalesce(streetnumber, ''), coalesce(extra,''),
|
||||
CURRENT_DATE,
|
||||
address_ref_id, 'match',
|
||||
(SELECT point FROM chill_main_address_reference WHERE id = address_ref_id),
|
||||
@@ -396,14 +405,14 @@ INSERT INTO chill_main_address (id, postcode_id, street, streetnumber, extra, va
|
||||
|
||||
-- f) insert created addresses in chill_main_addresses
|
||||
INSERT INTO chill_main_address (id, postcode_id, street, streetnumber, extra, validFrom, point, createdat, updatedat, createdby_id, updatedby_id)
|
||||
SELECT address_id, postcode_id, coalesce(street, ''), coalesce(streetnumber, ''), coalesce(extra,''),
|
||||
SELECT address_id, postcode_arr[1], coalesce(street, ''), coalesce(streetnumber, ''), coalesce(extra,''),
|
||||
CURRENT_DATE,
|
||||
(SELECT center FROM chill_main_postal_code WHERE id = postcode_id), -- geolocation is given by the postcode
|
||||
(SELECT center FROM chill_main_postal_code WHERE id = postcode_arr[1]), -- geolocation is given by the postcode
|
||||
CURRENT_DATE,
|
||||
CURRENT_DATE,
|
||||
(SELECT distinct(first_value(id) OVER(ORDER BY id)) FROM users),
|
||||
(SELECT distinct(first_value(id) OVER(ORDER BY id)) FROM users)
|
||||
FROM import.personnes WHERE address_ref_id IS NULL AND postcode_id IS NOT NULL;
|
||||
FROM import.personnes WHERE address_ref_id IS NULL AND postcode_arr IS NOT NULL;
|
||||
|
||||
SELECT setval('chill_main_address_id_seq', (SELECT COALESCE(max(id)) FROM chill_main_address));
|
||||
|
||||
@@ -440,7 +449,7 @@ UPDATE import.periodes SET period_id = periodid
|
||||
INSERT INTO chill_person_accompanying_period (id, openingdate, closingdate, step, remark, intensity, createdby_id, createdat, updatedby_id, updatedat) SELECT
|
||||
period_id,
|
||||
COALESCE(openingdate1, date(date_trunc('year', CURRENT_DATE))), closingdate1,
|
||||
'CONFIRMED', COALESCE(TRIM(remark), ''), intensity1,
|
||||
'CONFIRMED', COALESCE(TRIM(remark::text), ''), intensity1,
|
||||
(SELECT distinct(first_value(id) OVER(ORDER BY id)) FROM users), CURRENT_DATE,
|
||||
(SELECT distinct(first_value(id) OVER(ORDER BY id)) FROM users), CURRENT_DATE
|
||||
FROM import.periodes;
|
||||
@@ -482,11 +491,7 @@ INSERT INTO chill_person_accompanying_period_location_history (id, period_id, st
|
||||
INSERT INTO chill_person_accompanying_period_social_issues (accompanyingperiod_id, socialissue_id)
|
||||
SELECT
|
||||
DISTINCT ON (t.period_id) t.period_id,
|
||||
COALESCE(
|
||||
t.enfant_id,
|
||||
t.parent_id,
|
||||
1 -- default value ?
|
||||
) AS socialissue_id
|
||||
COALESCE(t.enfant_id, t.parent_id) AS socialissue_id
|
||||
FROM (
|
||||
SELECT p.period_id,
|
||||
(SELECT id FROM chill_person_social_issue WHERE title::jsonb->>'fr' = icp.parent1::jsonb->>'fr' AND parent_id IS NULL) AS parent_id, icp.parent1,
|
||||
@@ -494,13 +499,14 @@ FROM (
|
||||
(SELECT id FROM chill_person_social_issue WHERE title::jsonb->>'fr' = icp.parent1::jsonb->>'fr' AND parent_id IS NULL)) AS enfant_id, icp.enfant1
|
||||
FROM import.periodes p
|
||||
JOIN import.choix_periodes icp ON p.acp_socialissues = icp.acp_social_issues
|
||||
ORDER BY id) AS t;
|
||||
ORDER BY id) AS t
|
||||
WHERE COALESCE(t.enfant_id, t.parent_id) IS NOT NULL;
|
||||
|
||||
-- 57. Link referrer to periods
|
||||
UPDATE chill_person_accompanying_period acp
|
||||
SET user_id = COALESCE(
|
||||
(SELECT id FROM users WHERE users.username = ip.referrer),
|
||||
1 -- default value ?
|
||||
(SELECT distinct(first_value(id) OVER(ORDER BY id)) FROM users)
|
||||
)
|
||||
FROM import.periodes ip WHERE acp.id = ip.period_id;
|
||||
--SELECT ip.id, (SELECT id FROM users WHERE users.username = ip.referrer) AS referrer_id, ip.referrer, acp.id as period_id, acp.user_id FROM chill_person_accompanying_period acp JOIN import.periodes ip ON ip.period_id = acp.id ORDER BY ip.id;
|
||||
@@ -557,11 +563,16 @@ SELECT setval('chill_person_accompanying_period_work_id_seq', (SELECT COALESCE(m
|
||||
|
||||
-- 58. Link scopes to periods
|
||||
INSERT INTO accompanying_periods_scopes (accompanying_period_id, scope_id)
|
||||
SELECT ip.period_id, COALESCE(
|
||||
(SELECT id FROM scopes s WHERE ip.acp_scopes1::jsonb->>'fr' = s.name::jsonb->>'fr'),
|
||||
(SELECT id from scopes s WHERE s.name::jsonb->>'fr' = 'Principal') -- default value 'Principal'
|
||||
)
|
||||
FROM import.periodes ip;
|
||||
SELECT t.period_id, t.scope_id
|
||||
FROM (
|
||||
SELECT ip.period_id, COALESCE(
|
||||
(SELECT id FROM scopes s WHERE ip.acp_scopes1::jsonb->>'fr' = s.name::jsonb->>'fr'),
|
||||
(SELECT id from scopes s WHERE s.name::jsonb->>'fr' = 'Principal'),
|
||||
(SELECT distinct(first_value(id) OVER(ORDER BY id)) FROM scopes)
|
||||
) AS scope_id
|
||||
FROM import.periodes ip
|
||||
) AS t
|
||||
WHERE t.scope_id IS NOT NULL;
|
||||
|
||||
-- 59. Link origin to periods
|
||||
UPDATE chill_person_accompanying_period acp SET origin_id =
|
||||
@@ -937,6 +948,8 @@ AND NOT EXISTS ( SELECT 1 FROM chill_3party.third_party WHERE "name" = trim(t.pe
|
||||
-- DOWN
|
||||
--
|
||||
|
||||
\if :run_down
|
||||
|
||||
-- Undo 68.
|
||||
--TODO
|
||||
|
||||
@@ -1026,7 +1039,7 @@ SELECT setval('chill_person_household_id_seq', (SELECT COALESCE(max(id),1) FROM
|
||||
-- Undo 43.
|
||||
DELETE FROM chill_main_address addr USING import.personnes ip WHERE addr.id = ip.address_id;
|
||||
SELECT setval('chill_main_address_id_seq', (SELECT COALESCE(max(id),1) FROM chill_main_address));
|
||||
ALTER TABLE import.personnes DROP column postcode_id;
|
||||
ALTER TABLE import.personnes DROP column postcode_arr;
|
||||
ALTER TABLE import.personnes DROP column address_id;
|
||||
|
||||
-- Undo 42.
|
||||
@@ -1179,6 +1192,7 @@ ALTER TABLE import.periodes DROP COLUMN closingdate1;
|
||||
|
||||
|
||||
-- =============
|
||||
\endif
|
||||
-- QUESTIONS
|
||||
--
|
||||
-- définir par défaut: quel user, quel centre ?
|
||||
|
||||
@@ -119,24 +119,24 @@ CREATE TABLE "import".users (
|
||||
);
|
||||
|
||||
CREATE TABLE "import".tiers (
|
||||
ID varchar(50) NULL,
|
||||
CATEGORIE VARCHAR(255),
|
||||
SECTEUR_AS VARCHAR(255),
|
||||
COMMUNE VARCHAR(255),
|
||||
NOM VARCHAR(255),
|
||||
ACRONYM VARCHAR(64),
|
||||
PHONENUMBER VARCHAR(20),
|
||||
PHONENUMBER_2 VARCHAR(20),
|
||||
EMAIL VARCHAR(255),
|
||||
PERSONNE_NOM VARCHAR(255),
|
||||
PERSONNE_prenom VARCHAR(255),
|
||||
PERSONNE_CIVILITE VARCHAR(20),
|
||||
id varchar(50) NULL,
|
||||
categorie VARCHAR(255),
|
||||
secteur_as VARCHAR(255),
|
||||
commune VARCHAR(255),
|
||||
nom VARCHAR(255),
|
||||
acronym VARCHAR(64),
|
||||
phonenumber VARCHAR(20),
|
||||
phonenumber_2 VARCHAR(20),
|
||||
email VARCHAR(255),
|
||||
personne_nom VARCHAR(255),
|
||||
personne_prenom VARCHAR(255),
|
||||
personne_civilite VARCHAR(20),
|
||||
adresse TEXT,
|
||||
CP VARCHAR(10),
|
||||
TIERS_PARENT VARCHAR(255),
|
||||
TIERS_PHYSIQUE_VS_MORALE VARCHAR(50),
|
||||
POINT_DE_CONTACT_SUR_LE_TERRITOIRE TEXT,
|
||||
COORDONNEES TEXT,
|
||||
HORAIRES TEXT,
|
||||
OBSERVATIONS TEXT
|
||||
cp VARCHAR(10),
|
||||
tiers_parent VARCHAR(255),
|
||||
tiers_physique_vs_morale VARCHAR(50),
|
||||
point_de_contact_sur_le_territoire TEXT,
|
||||
coordonnees TEXT,
|
||||
horaires TEXT,
|
||||
observations TEXT
|
||||
);
|
||||
417
sql/remove-import-data.sql
Normal file
417
sql/remove-import-data.sql
Normal file
@@ -0,0 +1,417 @@
|
||||
BEGIN;
|
||||
|
||||
-- Nettoyage des donnees importees a partir des tables du schema import.
|
||||
-- Ce script suppose que sql/import.sql a ete execute au moins partiellement.
|
||||
|
||||
-- 1. Commentaires et liaisons des periodes
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'periodes' AND column_name = 'period_id'
|
||||
) THEN
|
||||
UPDATE chill_person_accompanying_period acp
|
||||
SET pinnedcomment_id = NULL
|
||||
FROM import.periodes ip
|
||||
WHERE acp.id = ip.period_id;
|
||||
|
||||
DELETE FROM chill_person_accompanying_period_comment com
|
||||
USING import.periodes ip
|
||||
WHERE com.accompanyingperiod_id = ip.period_id;
|
||||
|
||||
DELETE FROM chill_person_accompanying_period_work work
|
||||
USING import.periodes ip
|
||||
WHERE work.accompanyingperiod_id = ip.period_id;
|
||||
|
||||
DELETE FROM chill_person_accompanying_period_social_issues asi
|
||||
USING import.periodes ip
|
||||
WHERE asi.accompanyingperiod_id = ip.period_id;
|
||||
|
||||
DELETE FROM chill_person_accompanying_period_location_history hist
|
||||
USING import.periodes ip
|
||||
WHERE hist.period_id = ip.period_id;
|
||||
|
||||
DELETE FROM accompanying_periods_scopes scopes_link
|
||||
USING import.periodes ip
|
||||
WHERE scopes_link.accompanying_period_id = ip.period_id;
|
||||
|
||||
DELETE FROM chill_person_accompanying_period_participation part
|
||||
USING import.periodes ip
|
||||
WHERE part.accompanyingperiod_id = ip.period_id;
|
||||
|
||||
UPDATE chill_person_accompanying_period acp
|
||||
SET addresslocation_id = NULL,
|
||||
personlocation_id = NULL,
|
||||
user_id = NULL,
|
||||
origin_id = NULL,
|
||||
job_id = NULL
|
||||
FROM import.periodes ip
|
||||
WHERE acp.id = ip.period_id;
|
||||
|
||||
DELETE FROM chill_person_accompanying_period acp
|
||||
USING import.periodes ip
|
||||
WHERE acp.id = ip.period_id;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- 2. Menages, adresses et personnes
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'personnes' AND column_name = 'person_id'
|
||||
) THEN
|
||||
DELETE FROM chill_person_household_composition comp
|
||||
USING import.personnes ip
|
||||
WHERE comp.household_id = ip.person_id;
|
||||
|
||||
DELETE FROM chill_person_household_to_addresses hh_addr
|
||||
USING import.personnes ip
|
||||
WHERE hh_addr.household_id = ip.person_id;
|
||||
|
||||
DELETE FROM chill_person_household_members member
|
||||
USING import.personnes ip
|
||||
WHERE member.person_id = ip.person_id;
|
||||
|
||||
DELETE FROM chill_person_household hh
|
||||
USING import.personnes ip
|
||||
WHERE hh.id = ip.person_id;
|
||||
|
||||
DELETE FROM chill_person_person_center_history hist
|
||||
USING import.personnes ip
|
||||
WHERE hist.person_id = ip.person_id;
|
||||
|
||||
DELETE FROM chill_person_person person
|
||||
USING import.personnes ip
|
||||
WHERE person.id = ip.person_id;
|
||||
END IF;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'personnes' AND column_name = 'address_id'
|
||||
) THEN
|
||||
DELETE FROM chill_main_address addr
|
||||
USING import.personnes ip
|
||||
WHERE addr.id = ip.address_id;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- 3. Adresses temporaires de periodes et localisations
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'choix_periodes' AND column_name = 'address_location_id'
|
||||
) THEN
|
||||
DELETE FROM chill_main_address addr
|
||||
USING import.choix_periodes icp
|
||||
WHERE addr.id = icp.address_location_id;
|
||||
END IF;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'localisations' AND column_name = 'address_id'
|
||||
) THEN
|
||||
DELETE FROM chill_main_address addr
|
||||
USING import.localisations loc
|
||||
WHERE addr.id = loc.address_id;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- 4. Localisations et types de localisation
|
||||
DELETE FROM chill_main_location loc
|
||||
USING import.localisations il
|
||||
WHERE loc.name = trim(il.locname);
|
||||
|
||||
DELETE FROM chill_main_location_type lt
|
||||
USING import.choix_localisations icl
|
||||
WHERE lt.title::jsonb->>'fr' = trim(icl.title)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM chill_main_location loc
|
||||
WHERE loc.locationtype_id = lt.id
|
||||
);
|
||||
|
||||
-- 5. Tiers et categories
|
||||
DELETE FROM chill_3party.thirdparty_category tpc
|
||||
USING chill_3party.third_party tp, import.tiers it
|
||||
WHERE tpc.thirdparty_id = tp.id
|
||||
AND (
|
||||
tp.name = trim(it.nom)
|
||||
OR tp.name = trim(it.personne_nom)
|
||||
);
|
||||
|
||||
DELETE FROM chill_3party.third_party tp
|
||||
USING import.tiers it
|
||||
WHERE tp.name = trim(it.personne_nom)
|
||||
OR tp.name = trim(it.nom);
|
||||
|
||||
DELETE FROM chill_3party.party_category pc
|
||||
USING import.tiers it
|
||||
WHERE pc.name::jsonb->>'fr' = trim(it.categorie)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM chill_3party.thirdparty_category tpc
|
||||
WHERE tpc.category_id = pc.id
|
||||
);
|
||||
|
||||
-- 6. Utilisateurs importes et historique des metiers
|
||||
DELETE FROM chill_main_user_job_history hist
|
||||
USING import.users iu
|
||||
WHERE hist.user_id = (
|
||||
SELECT id FROM users WHERE username = split_part(iu.email, '@', 1)
|
||||
);
|
||||
|
||||
DELETE FROM users u
|
||||
USING import.users iu
|
||||
WHERE u.username = split_part(iu.email, '@', 1);
|
||||
|
||||
DELETE FROM chill_main_user_job job
|
||||
USING import.users iu
|
||||
WHERE job.label::jsonb->>'fr' = trim(iu.metier)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM chill_main_user_job_history hist
|
||||
WHERE hist.job_id = job.id
|
||||
);
|
||||
|
||||
-- 7. Tables de reference ajoutees pendant l'import principal
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'choix_periodes' AND column_name = 'work_social_action1'
|
||||
) AND EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'choix_periodes' AND column_name = 'work_social_issue1'
|
||||
) THEN
|
||||
DELETE FROM chill_person_social_action sa
|
||||
USING import.choix_periodes icp
|
||||
LEFT JOIN LATERAL (
|
||||
SELECT si.id
|
||||
FROM chill_person_social_issue si
|
||||
WHERE si.title::jsonb->>'fr' = icp.work_social_issue1::jsonb->>'fr'
|
||||
ORDER BY (si.parent_id IS NULL), si.id
|
||||
LIMIT 1
|
||||
) issue ON true
|
||||
WHERE sa.title::jsonb->>'fr' = icp.work_social_action1::jsonb->>'fr'
|
||||
AND (
|
||||
(sa.issue_id IS NULL AND issue.id IS NULL)
|
||||
OR sa.issue_id = issue.id
|
||||
);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'choix_periodes' AND column_name = 'enfant1'
|
||||
) THEN
|
||||
DELETE FROM chill_person_social_issue child_issue
|
||||
USING import.choix_periodes icp
|
||||
WHERE child_issue.title::jsonb->>'fr' = icp.enfant1::jsonb->>'fr';
|
||||
END IF;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'choix_periodes' AND column_name = 'parent1'
|
||||
) THEN
|
||||
DELETE FROM chill_person_social_issue parent_issue
|
||||
USING import.choix_periodes icp
|
||||
WHERE parent_issue.title::jsonb->>'fr' = icp.parent1::jsonb->>'fr'
|
||||
AND parent_issue.parent_id IS NULL;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
DELETE FROM users u
|
||||
USING import.choix_periodes icp
|
||||
WHERE u.username::text = icp.referrer::text
|
||||
AND u.password = ''
|
||||
AND u.enabled = false;
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'choix_periodes' AND column_name = 'acp_scopes1'
|
||||
) THEN
|
||||
DELETE FROM scopes s
|
||||
USING import.choix_periodes icp
|
||||
WHERE s.name::jsonb->>'fr' = icp.acp_scopes1::jsonb->>'fr'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM accompanying_periods_scopes aps
|
||||
WHERE aps.scope_id = s.id
|
||||
);
|
||||
END IF;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'choix_periodes' AND column_name = 'job1'
|
||||
) THEN
|
||||
DELETE FROM chill_main_user_job job
|
||||
USING import.choix_periodes icp
|
||||
WHERE job.label::jsonb->>'fr' = icp.job1::jsonb->>'fr'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM chill_person_accompanying_period acp
|
||||
WHERE acp.job_id = job.id
|
||||
);
|
||||
END IF;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'choix_periodes' AND column_name = 'origin1'
|
||||
) THEN
|
||||
DELETE FROM chill_person_accompanying_period_origin origin
|
||||
USING import.choix_periodes icp
|
||||
WHERE origin.label::jsonb->>'fr' = icp.origin1::jsonb->>'fr'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM chill_person_accompanying_period acp
|
||||
WHERE acp.origin_id = origin.id
|
||||
);
|
||||
END IF;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'choix_periodes' AND column_name = 'closingmotive1'
|
||||
) THEN
|
||||
DELETE FROM chill_person_accompanying_period_closingmotive motive
|
||||
USING import.choix_periodes icp
|
||||
WHERE motive.name::jsonb->>'fr' = icp.closingmotive1::jsonb->>'fr';
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'choix_personnes' AND column_name = 'household_position1'
|
||||
) THEN
|
||||
DELETE FROM chill_person_household_position pos
|
||||
USING import.choix_personnes icp
|
||||
WHERE pos.label::jsonb->>'fr' = icp.household_position1::jsonb->>'fr';
|
||||
END IF;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'choix_personnes' AND column_name = 'household_composition_type1'
|
||||
) THEN
|
||||
DELETE FROM chill_person_household_composition_type comp_type
|
||||
USING import.choix_personnes icp
|
||||
WHERE comp_type.label::jsonb->>'fr' = icp.household_composition_type1::jsonb->>'fr';
|
||||
END IF;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'choix_personnes' AND column_name = 'maritalstatus1'
|
||||
) THEN
|
||||
DELETE FROM chill_person_marital_status ms
|
||||
USING import.choix_personnes icp
|
||||
WHERE ms.name::jsonb->>'fr' = icp.maritalstatus1::jsonb->>'fr';
|
||||
END IF;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'choix_personnes' AND column_name = 'country1'
|
||||
) THEN
|
||||
DELETE FROM country c
|
||||
USING import.choix_personnes icp
|
||||
WHERE c.name::jsonb->>'fr' = icp.country1::jsonb->>'fr'
|
||||
AND c.id > 249;
|
||||
END IF;
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'import' AND table_name = 'choix_personnes' AND column_name = 'civility1'
|
||||
) THEN
|
||||
DELETE FROM chill_main_civility civ
|
||||
USING import.choix_personnes icp
|
||||
WHERE civ.name::jsonb->>'fr' = icp.civility1::jsonb->>'fr';
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- 8. Suppression des colonnes techniques ajoutees par sql/import.sql
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS person_id;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS address_id;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS address_ref_id;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS postcode_id;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS postcode_arr;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS postcode1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS birthdate1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS deathdate1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS validfrom1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS household_startdate1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS civility1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS gender1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS nationality1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS countryofbirth1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS maritalstatus1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS numberofchildren1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS placeofbirth1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS memo1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS household_composition_type1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS household_position1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS mobilenumber1;
|
||||
ALTER TABLE import.personnes DROP COLUMN IF EXISTS phonenumber1;
|
||||
|
||||
ALTER TABLE import.periodes DROP COLUMN IF EXISTS period_id;
|
||||
ALTER TABLE import.periodes DROP COLUMN IF EXISTS openingdate1;
|
||||
ALTER TABLE import.periodes DROP COLUMN IF EXISTS closingdate1;
|
||||
ALTER TABLE import.periodes DROP COLUMN IF EXISTS closingmotive1;
|
||||
ALTER TABLE import.periodes DROP COLUMN IF EXISTS origin1;
|
||||
ALTER TABLE import.periodes DROP COLUMN IF EXISTS job1;
|
||||
ALTER TABLE import.periodes DROP COLUMN IF EXISTS acp_scopes1;
|
||||
ALTER TABLE import.periodes DROP COLUMN IF EXISTS intensity1;
|
||||
|
||||
ALTER TABLE import.choix_periodes DROP COLUMN IF EXISTS closingmotive1;
|
||||
ALTER TABLE import.choix_periodes DROP COLUMN IF EXISTS origin1;
|
||||
ALTER TABLE import.choix_periodes DROP COLUMN IF EXISTS job1;
|
||||
ALTER TABLE import.choix_periodes DROP COLUMN IF EXISTS acp_scopes1;
|
||||
ALTER TABLE import.choix_periodes DROP COLUMN IF EXISTS parent1;
|
||||
ALTER TABLE import.choix_periodes DROP COLUMN IF EXISTS enfant1;
|
||||
ALTER TABLE import.choix_periodes DROP COLUMN IF EXISTS work_social_action1;
|
||||
ALTER TABLE import.choix_periodes DROP COLUMN IF EXISTS work_social_issue1;
|
||||
ALTER TABLE import.choix_periodes DROP COLUMN IF EXISTS address_location_id;
|
||||
|
||||
ALTER TABLE import.choix_personnes DROP COLUMN IF EXISTS civility1;
|
||||
ALTER TABLE import.choix_personnes DROP COLUMN IF EXISTS country1;
|
||||
ALTER TABLE import.choix_personnes DROP COLUMN IF EXISTS maritalstatus1;
|
||||
ALTER TABLE import.choix_personnes DROP COLUMN IF EXISTS household_composition_type1;
|
||||
ALTER TABLE import.choix_personnes DROP COLUMN IF EXISTS household_position1;
|
||||
|
||||
ALTER TABLE import.choix_localisations DROP COLUMN IF EXISTS title1;
|
||||
ALTER TABLE import.localisations DROP COLUMN IF EXISTS postcode_arr;
|
||||
ALTER TABLE import.localisations DROP COLUMN IF EXISTS address_id;
|
||||
ALTER TABLE import.localisations DROP COLUMN IF EXISTS address_ref_id;
|
||||
|
||||
ALTER TABLE import.tiers DROP COLUMN IF EXISTS postcode_arr;
|
||||
ALTER TABLE import.tiers DROP COLUMN IF EXISTS address_id;
|
||||
ALTER TABLE import.tiers DROP COLUMN IF EXISTS address_ref_id;
|
||||
|
||||
-- 9. Recalage des sequences principales
|
||||
SELECT setval('chill_person_accompanying_period_comment_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_accompanying_period_comment));
|
||||
SELECT setval('chill_person_accompanying_period_work_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_accompanying_period_work));
|
||||
SELECT setval('chill_person_accompanying_period_location_history_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_accompanying_period_location_history));
|
||||
SELECT setval('chill_person_accompanying_period_participation_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_accompanying_period_participation));
|
||||
SELECT setval('chill_person_accompanying_period_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_accompanying_period));
|
||||
SELECT setval('chill_person_household_composition_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_household_composition));
|
||||
SELECT setval('chill_person_household_members_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_household_members));
|
||||
SELECT setval('chill_person_household_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_household));
|
||||
SELECT setval('chill_person_person_center_history_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_person_center_history));
|
||||
SELECT setval('chill_person_person_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_person));
|
||||
SELECT setval('chill_person_social_action_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_social_action));
|
||||
SELECT setval('chill_person_social_issue_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_social_issue));
|
||||
SELECT setval('chill_person_accompanying_period_origin_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_accompanying_period_origin));
|
||||
SELECT setval('chill_person_accompanying_period_closingmotive_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_accompanying_period_closingmotive));
|
||||
SELECT setval('chill_person_household_position_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_household_position));
|
||||
SELECT setval('chill_person_household_composition_type_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_person_household_composition_type));
|
||||
SELECT setval('chill_main_civility_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_main_civility));
|
||||
SELECT setval('country_id_seq', (SELECT COALESCE(max(id), 1) FROM country));
|
||||
SELECT setval('users_id_seq', (SELECT COALESCE(max(id), 1) FROM users));
|
||||
SELECT setval('scopes_id_seq', (SELECT COALESCE(max(id), 1) FROM scopes));
|
||||
SELECT setval('chill_main_user_job_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_main_user_job));
|
||||
SELECT setval('chill_main_address_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_main_address));
|
||||
SELECT setval('chill_main_location_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_main_location));
|
||||
SELECT setval('chill_main_location_type_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_main_location_type));
|
||||
SELECT setval('chill_main_user_job_history_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_main_user_job_history));
|
||||
SELECT setval('chill_3party.party_category_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_3party.party_category));
|
||||
SELECT setval('chill_3party.third_party_id_seq', (SELECT COALESCE(max(id), 1) FROM chill_3party.third_party));
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user