postgresql 데이터베이스 timescaledb 타 이 밍 라 이브 러 리 에서 빅 데이터 계량 표를 초 표 로 변환 하 는 문제

머리말
요 며칠 작업 할 때 timescaledb 타 이 밍 라 이브 러 리 에 일부 빅 데이터 양의 표 가 초 표 가 아니 라 는 것 을 발 견 했 습 니 다.그 당시 에 라 이브 러 리 를 만 들 때 삽입,조회 효율 에 영향 을 주지 않 았 기 때문에 초 표 로 바 꿔 야 할 것 같 습 니 다.
업무 상의 이유 로 일부 내용 을 비밀 로 처리 하 였 다.
새 테이블 생 성
우선 timescaledb 타 이 밍 라 이브 러 리 에 초 표를 만 들 려 면 데이터 가 없어 야 하기 때 문 입 니 다.
그래서 첫 번 째 단 계 는 원래 표 와 똑 같은 시 계 를 만 드 는 것 입 니 다.cs)표 구 조 를 직접 복사 할 수도 있 고 도구 로 표 구 조 를 복사 할 수도 있다.
새 시 계 를 초 시계 로 바꾸다.
새 시 계 를 초 시계 로 바 꾸 고 7 일 1 분 구 로 바 꿉 니 다.

--  7    
SELECT create_hypertable('  _cs', 'alarm_time', chunk_time_interval => INTERVAL '7 day');
--     
CREATE INDEX "  _cs_create_time_idx" ON "hrmw"."  _cs" USING btree (
 "create_time" "code"."  " DESC NULLS FIRST
);
3 삽입 데이터
1.데이터 양 이 많 지 않 은 경우 직접 삽입 가능

INSERT into   _cs SELECT * from   ;
2.데이터 양 이 많 으 면 하루 에 삽입 하거나 한 달 또는 몇 달 에 같이 삽입 할 수 있 습 니 다.

INSERT into   _cs SELECT * from    where alarm_time >= '2020-9-1';
INSERT into   _cs SELECT * from    where alarm_time >= '2020-10-1' and alarm_time < '2020-11-1'  ;
3.함수 활용(저장 과정)
표 데이터 의 양 이 너무 많 고 하루 에 삽입 하면 저장 과정 을 활용 할 수 있 습 니 다(postgresql 데이터 베 이 스 를 함수 라 고 합 니 다).
다음은 내 가 쓴 함수 다.참고 하 다.

CREATE 
	OR REPLACE PROCEDURE "hrmw"."sp_into_  _pt" ( ) AS $BODY$ BEGIN
	--           
	DECLARE --               
		target_text TEXT;
	sqltext TEXT;
	sqltext1 TEXT;
	sqltext2 TEXT;
	rd record;
	nloop INT;
	isexist TEXT;
	datestr TEXT;
	begindate TEXT;
	n INT;
	BEGIN
			--         
			sqltext := 'select to_char(min(alarm_time),''yyyy-mm-dd'') datestr from tb_hrmw_moni_target';    
		EXECUTE sqltext INTO begindate;
		n := date_part( 'day', now( ) - begindate :: DATE );
--enddate:=(to_char(now(),'yyyy-mm-dd'))::text;
		FOR nloop IN 0..n
		LOOP
		datestr := ( begindate :: DATE + nloop ) :: TEXT;
		sqltext2 := '
		insert into   _cs 
		select
		  1,
		code,
		  2,
		alarm_time,
		  3,
		  4
		from   
		where alarm_time >= ''' || datestr || ' 00:00:00''
		and alarm_time <= ''' || datestr || ' 23:59:59''
		'; 
		EXECUTE sqltext2;
		COMMIT;
		
	END loop;
RETURN;

END;

END $BODY$ LANGUAGE plpgsql
효과
모드timescaledb_내부 아래 가 파 티 션 이에 요.
在这里插入图片描述
postgresql 데이터베이스 timescaledb 타 이 밍 라 이브 러 리 에서 빅 데이터 계량 표를 초 표 로 변환 하 는 글 을 소개 합 니 다.더 많은 postgresql 데이터베이스 timescaledb 타 이 밍 라 이브 러 리 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기