Feature #6589
Organize tables in db with schemas
100%
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
Refs #6589: move tables to different schemas (identified artifacts: "avsm")
Refs #6589: fix for gino
Refs #6589: use '_' for subschemas (workaround for a bug in Autocad)
History
#1 Updated by Philippe May over 5 years ago
#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