건물과 학구 데이터 처리 저장 과정
13588 단어 데이터베이스
CREATE OR REPLACE FUNCTION buildingareaprocess()
RETURNS integer AS
$BODY$
DECLARE
r RECORD;
num int4 := 0;
sql varchar;
create_sql varchar;
BEGIN
--
select UpdateGeometrySRID('public', 'qu_area', 'the_geom', 4326) ;
-- 、 、 schema
ALTER TABLE
geo_data.public.buildingarea ADD COLUMN xiaoxue VARCHAR(250);
ALTER TABLE
geo_data.public.buildingarea ADD COLUMN zhongxue VARCHAR(250);
ALTER TABLE
geo_data.public.buildingarea ADD COLUMN qu VARCHAR(40);
--
--IF to_regclass('geo_data.public.index_fid') IS NULL THEN
--CREATE INDEX index_fid ON geo_data.public.buildingarea (fid);
--END IF;
CREATE INDEX IF NOT EXISTS index_buildingfid ON geo_data.public.buildingarea (fid);
--
drop table if exists primary_tmp;
drop table if exists middle_tmp;
drop table if exists district_tmp;
create table primary_tmp as
select b.fid,array_to_string(group_concat(xx."NAME"),',') xiaoxue from buildingarea b,xx_area xx where ST_Contains(xx.the_geom,b.the_geom) group by b.fid ;
create table middle_tmp as
select b.fid,array_to_string(group_concat(zx."NAME"),',') zhongxue from buildingarea b,cz_area zx where ST_Contains(zx.the_geom,b.the_geom) group by b.fid ;
create table district_tmp as
select b.fid,q."name" qu from buildingarea b,qu_area q where ST_Contains(q.the_geom,b.the_geom) ;
--
CREATE INDEX IF NOT EXISTS index_primary_tmp ON primary_tmp (fid);
CREATE INDEX IF NOT EXISTS index_middle_tmp ON middle_tmp (fid);
CREATE INDEX IF NOT EXISTS index_district_tmp ON district_tmp (fid);
--
update buildingarea b set xiaoxue = (select t.xiaoxue from primary_tmp t where b.fid=t.fid);
update buildingarea b set zhongxue = (select t.zhongxue from middle_tmp t where b.fid=t.fid);
update buildingarea b set qu = (select t.qu from district_tmp t where b.fid=t.fid);
--
CREATE INDEX IF NOT EXISTS index_buildingqu ON geo_data.public.buildingarea (qu);
-- buildingarea
sql := 'select distinct "name" qu from qu_area;';
FOR r IN EXECUTE sql LOOP
create_sql := 'create table geo_data.public.qu_'||num||' as select * from buildingarea where qu = '''||r.qu||'''';
EXECUTE create_sql;
num := num + 1;
END LOOP;
return num;
END;
$BODY$
LANGUAGE plpgsql;
:
postgresql ,
CREATE AGGREGATE group_concat(anyelement) (
sfunc = array_append, -- , append
stype = anyarray, --
initcond = '{}' --
);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SQLite의 query로 망설임이것은 내가 처음 안드로이드 응용 프로그램 개발에서 망설이고, 그 후 해결 된 방법을 비망록으로 철자하고 있습니다. java에서 SQLite를 이용한 애플리케이션을 작성하는 동안 EditText에 입력된 item이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.