merge_links_enhanced.sh 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/bin/bash
  2. set -e
  3. source env.sh
  4. echo "🔗 Ühendan kõik links_* tabelid skeemist ${destination_schema}"
  5. # Leia esimene relation_id, mida kasutada struktuuri eeskujuks
  6. LINKS_TEMPLATE=$(psql ${CONNECTION_NAME} -At -d ${destination_dbname} -c "SELECT relation_id FROM ${destination_schema}.ardok_administrative WHERE admin_level = '6' LIMIT 1;")
  7. psql ${CONNECTION_NAME} -d ${destination_dbname} <<EOF
  8. DO \$\$
  9. DECLARE
  10. schema_name text := '${destination_schema}';
  11. template_name text := 'links_' || '${LINKS_TEMPLATE}';
  12. r record;
  13. BEGIN
  14. RAISE NOTICE 'Loon %', schema_name || '.links';
  15. EXECUTE format('DROP TABLE IF EXISTS %I.links CASCADE', schema_name);
  16. EXECUTE format('CREATE TABLE %I.links (LIKE %I.%I INCLUDING ALL)', schema_name, schema_name, template_name);
  17. FOR r IN
  18. EXECUTE format('SELECT tablename FROM pg_tables WHERE schemaname = %L AND tablename LIKE %L', schema_name, 'links_%')
  19. LOOP
  20. EXECUTE format('INSERT INTO %I.links SELECT * FROM %I.%I', schema_name, schema_name, r.tablename);
  21. END LOOP;
  22. -- Eemalda geomeetrilised duplikaadid (identsete geomidega read, hoides ühe)
  23. EXECUTE format($sql$
  24. DELETE FROM %I.links a
  25. USING %I.links b
  26. WHERE a.ctid < b.ctid AND ST_Equals(a.geom, b.geom)
  27. $sql$, schema_name, schema_name);
  28. -- Lisa id veerg ja täida järjestikuse ID-ga
  29. EXECUTE format('ALTER TABLE %I.links ADD COLUMN id SERIAL PRIMARY KEY', schema_name);
  30. -- Loo ruumiline indeks
  31. EXECUTE format('CREATE INDEX links_geom_idx ON %I.links USING GIST (geom)', schema_name);
  32. END
  33. \$\$;
  34. EOF