Project

General

Profile

Feature #6589

Organize tables in db with schemas

Added by Philippe May over 5 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Target version:
-
Start date:
09/09/2018
Due date:
% Done:

100%

Close

Description

There are a lot of tables, it's difficult to navigate when accessing the database.

It should be organized with schemas, eg:

  • raw survey data in their respective schema
  • by category for survey data
  • by source for other geometry tables
  • other schemas for other tables

Associated revisions

Revision 9d8ec334 (diff)
Added by Philippe May over 5 years ago

Refs #6589: move tables to different schemas (identified artifacts: "avsm")

Revision df962acd (diff)
Added by Philippe May over 5 years ago

Refs #6589: fix for gino

Revision c314191e (diff)
Added by Philippe May over 5 years ago

Refs #6589: use '_' for subschemas (workaround for a bug in Autocad)

History

#1 Updated by Philippe May over 5 years ago

Technical info

In Postgres:

As superuser:

  • Create a schema: CREATE SCHEMA "tdc.other"
  • Grant creation: GRANT ALL ON SCHEMA "tdc.other" TO avgis
  • Move a table: alter table building set schema "tdc.other"

#2 Updated by Philippe May over 5 years ago

Create schemas and grant permissions:

create schema "gisaf" ;
create schema "gisaf.admin" ;
create schema "gisaf.map" ;
create schema "gisaf.survey" ;
create schema "avsm" ;
create schema "avsm.survey" ;
create schema "avsm.raw_survey" ;
create schema "avsm.water" ;
create schema "avsm.misc" ;
create schema "other" ;
create schema "other.tdc" ;
create schema "other.water_harvest" ;

grant all ON SCHEMA "gisaf" to avgis ;
grant all ON SCHEMA "gisaf.admin" to avgis ;
grant all ON SCHEMA "gisaf.map" to avgis ;
grant all ON SCHEMA "gisaf.survey" to avgis ;
grant all ON SCHEMA "avsm" to avgis ;
grant all ON SCHEMA "avsm.survey" to avgis ;
grant all ON SCHEMA "avsm.raw_survey" to avgis ;
grant all ON SCHEMA "avsm.water" to avgis ;
grant all ON SCHEMA "avsm.misc" to avgis ;
grant all ON SCHEMA "other" to avgis ;
grant all ON SCHEMA "other.tdc" to avgis ;
grant all ON SCHEMA "other.water_harvest" to avgis ;

Move tables:

alter table accuracy set schema "gisaf.survey";
alter table accuracy_equiment_surveyor_mapping set schema "gisaf.survey";
alter table category set schema "gisaf.survey";
alter table category_group set schema "gisaf.survey";
alter table category_model_type set schema "gisaf.survey";
alter table equipment set schema "gisaf.survey";
alter table surveyor set schema "gisaf.survey";
alter table raw_survey set schema "gisaf.survey";
alter table origin_raw_point set schema "gisaf.survey";

alter table feature_import_data set schema "gisaf.admin";
alter table file_import set schema "gisaf.admin";
alter table feature_import_data set schema "gisaf.admin";
alter table file_import set schema "gisaf.admin";
alter table project set schema "gisaf.admin";
alter table reconciliation set schema "gisaf.admin";
alter table role set schema "gisaf.admin";
alter table "user" set schema "gisaf.admin";
alter table roles_users set schema "gisaf.admin";

alter table map_base_style set schema "gisaf.map";
alter table qml set schema "gisaf.map";

alter table info_source set schema "avsm";
alter table location set schema "avsm";
alter table resident set schema "avsm";

alter table building set schema "other.tdc";
alter table cadastral set schema "other.tdc";
alter table contour set schema "other.tdc";
alter table road set schema "other.tdc";
alter table zone set schema "other.tdc" ;
alter table line_of_force set schema "other.tdc" ;

alter table water_tank set schema "other.water_harvest";
alter table catchment_watershed set schema "other.water_harvest";
alter table river_channel set schema "other.water_harvest";

alter table well set schema "avsm.water";
alter table well_level set schema "avsm.water";
alter table well_monitoring_status set schema "avsm.water";
alter table well_status set schema "avsm.water";
alter table well_type set schema "avsm.water";

alter table telephone_box set schema "avsm.misc";
alter table telephone_box_m set schema "avsm.misc";
alter table telephone_box_mtype set schema "avsm.misc";
alter table telephone_box_mounting_type set schema "avsm.misc";
alter table telephone_box_type set schema "avsm.misc";
alter table telephone_line set schema "avsm.misc";
alter table telephone_cable_type set schema "avsm.misc";

alter table waste_water_treatment_plant set schema "avsm.water";
alter table waste_water_treatment_plant_architect set schema "avsm.water";
alter table waste_water_treatment_plant_care_taker set schema "avsm.water";
alter table waste_water_treatment_plant_contractor set schema "avsm.water";
alter table waste_water_treatment_plant_designer set schema "avsm.water";
alter table waste_water_treatment_plant_status set schema "avsm.water";
alter table waste_water_treatment_plant_type set schema "avsm.water";
alter table waste_water_treatment_component set schema "avsm.water";
alter table waste_water_treatment_component_flow set schema "avsm.water";
alter table waste_water_treatment_component_to_output_flow set schema "avsm.water";
alter table waste_water_treatment_component_type set schema "avsm.water";
alter table waste_water_treatment_origin set schema "avsm.water";
alter table waste_water_treatment_origin_to_component_flow set schema "avsm.water";
alter table waste_water_treatment_output set schema "avsm.water";
alter table waste_water_treatment_output_category set schema "avsm.water";
alter table waste_water_treatment_type set schema "avsm.water";

alter table weather_station set schema "avsm.misc" ;
alter table weather_station_provider set schema "avsm.misc" ;
alter table weather_station_levels set schema "avsm.misc" ;

alter table raingauge_av set schema "avsm.misc" ;
alter table raingauge_region set schema "avsm.misc" ;
alter table raingauge_av_level set schema "avsm.misc" ;
alter table raingauge_region_level set schema "avsm.misc" ;

alter table geological_formation_type set schema "avsm.misc" ;
alter table geological_formation set schema "avsm.misc" ;

#3 Updated by Philippe May over 5 years ago

Change all survey and raw survey tables:

for tn in $(psql avgis -tc "SELECT table_name FROM information_schema.tables WHERE table_schema='public' AND table_name LIKE 'V_%'"); do psql avgis -c "alter table \"$tn\" set schema \"avsm.survey\";";done
for tn in $(psql avgis -tc "SELECT table_name FROM information_schema.tables WHERE table_schema='public' AND table_name LIKE 'RAW_V_%'"); do psql avgis -c "alter table \"$tn\" set schema \"avsm.raw_survey\";";done

#4 Updated by Philippe May over 5 years ago

  • Status changed from New to Resolved
  • % Done changed from 0 to 100

Applied in production.

#5 Updated by Philippe May over 5 years ago

  • Status changed from Resolved to In Progress
  • Assignee set to Philippe May

Reopening: Autocad has a bug with schema names containing a ".": it doesn't read these schemas properly, and the table names are not processed properly. Eg: "avsm.survey"."foo" becomes "avsm"."survey_foo". Damn Autodesk.

As a workaround for this, all dots in the schemas must be replaced, eg. with a "_".

#6 Updated by Philippe May over 5 years ago

  • Status changed from In Progress to Resolved

Fixed.
Along the changes for the models in the code, had to run manually SQL commands for renaming the schemas:

ALTER SCHEMA "gisaf.survey" RENAME TO gisaf_survey;

#7 Updated by Philippe May over 5 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF