하위 쿼리를 사용하여 drop_partition에 대한 동적 조건 자 값을 생성 할 수 없습니다.
일반적으로 .sql 파일에 drop_partition SQL expresion을 생성하는 스크립트로 동적 기능이 부족한 것으로 간주하고 다음 단계에서 실행합니다.
여기 예를 참조하십시오 : - 파일 \o /tmp/file.sql
select
'SELECT DROP_PARTITION(''public.tblone'','||
max(id)||
');' from tblone;
에 쿼리의 출력을 플러시 -
create table tblone (id int not null) partition by id;
insert into tblone values (1);
commit;
파일의 내용을 실행을
\i /tmp/file.sql
--this is the content.
SELECT DROP_PARTITION('public.tblone',1);
비 날짜 및 b에 필요한 데이터를 기반으로하는 파티션이있는 경우입니다. e는 다른 데이터 세트에서 파생됩니다. 당신이 당신의 파티션 키 또는 동적으로 drop_partition 키 값을 채울 내부 기능을 사용할 수있는 데이터 열에서 파생 된 값으로 날짜를 경우
:
drop table tblone cascade;
create table tblone (id date not null) partition by
(((date_part('year', id) * 100) + date_part('month', id)));
insert into tblone values (getdate());
commit;
dbadmin=> select * from tblone;
id
------------
2017-01-04
(1 row)
dbadmin=> SELECT DROP_PARTITION('tblone',(date_part('year', getdate()) * 100) + date_part('month', getdate()));
DROP_PARTITION
-------------------
Partition dropped
(1 row)
dbadmin=> select * from tblone;
id
----
(0 rows)
- 당신은 항상 GETDATE와 함께 재생할 수 있습니다()를 클릭하여 현재 또는 지난 달 또는 원하는 기간을 받으십시오.
또 다른 옵션은 vsql cmd를 라인 변수 예
이
dbadmin=> drop table tblone cascade;
DROP TABLE
dbadmin=> create table tblone (id int not null) partition by id;
CREATE TABLE
dbadmin=> insert into tblone values (1);
1
dbadmin=> commit;
COMMIT
dbadmin=> select * from tblone;
id
----
1
(1 row)
가 사용하는 것입니다 - 단지 튜플
dbadmin=> \t
Showing only tuples.
보여 - 파일로 최대 값을 침을
dbadmin=> \o /tmp/file
dbadmin=> select max(id) from tblone;
dbadmin=> \o
dbadmin=> \t
Tuples only is off.
,363,210
- 파일 내용에 변수의 값을 설정합니다 (최대 값)
dbadmin=> \set maxvalue `cat /tmp/file`
dbadmin=> \echo :maxvalue
1
- 내가 희망 변수
dbadmin=> SELECT DROP_PARTITION('tblone',:maxvalue);
DROP_PARTITION
-------------------
Partition dropped
(1 row)
dbadmin=> select * from tblone;
id
----
(0 rows)
- 를 사용하여 드롭 파티션을 실행 이 도움 : :)
타 파티션에서 많은 파티션을 쉽게 삭제할 수있는 방법 코드 한 줄을 사용하는 경우 MOVE_PARTITIONS_TO_TABLE을 더미 테이블에 넣은 다음 더미 테이블을 놓습니다. -이 작업은 주 테이블에 대한 잠금을 필요로하지 않으며 더미 테이블 삭제는 데이터베이스에 대한 저렴한 작업입니다. 대량 drop_partition의).
- 기본 테이블 (예측 포함)에서 더미 테이블을 생성하십시오.
- 동적 'MOVE_PARTITIONS_TO_TABLE'('소스', ' 파티션', '파티션', '대상/더미 테이블')을 생성합니다.
- 더미 더미 테이블. 당신이 보는 경우 -
작은 예를 참조 이
\o /tmp/file.sql
select 'create dummy table as source table including projections;';
select
'SELECT MOVE_PARTITIONS_TO_TABLE(''source'','''||
:minpartition()||
''','''||
:maxpartition()||
''',''target/dummy table'')'
from tblone;
select 'drop table dummy cascade';
-- execute the content of the file
\i /tmp/file.sql
--make sure the content of the file is correct content
**
BTW (& 실행 생성) 같은 접근 방식 (100 당신이 그것을 적용 할 수 complete-되지 않습니다) Vertica 데이터베이스 기사 및 스크립트에 대한 시간이 에서 http://wwww.aodba.com까지
**
고마워요. 이것은 트릭을 수행합니다. 공유하는 방법에 따라 둘 이상의 파티션을 삭제할 수있는 방법이 있는지 궁금합니다. 그것은 케이크 위에서 입을 것입니다. – minatverma
@minatverma - 내가 당신에게 착빙 요구를 추가했습니다 :) –
Thanks a ton. 정말 도움이되었습니다. – minatverma