April 2014
M T W T F S S
« Mar   May »
 123456
78910111213
14151617181920
21222324252627
282930  

Particionar tabla postgres, y llenar automaticamente con registros

El siguiente script es para crear una tabla fragmentada horizontalmente y llenar automaticamente con un procedimiento almacenado.

–Postgres
create table tablanormal(llave bigint primary key, dato varchar(15));
create table tablaparticionada(llave bigint primary key, dato varchar(15));

 

–crea tablas hijas
create table tablaparticionada1(check (llave>=0 and llave<100000))inherits(tablaparticionada);
create table tablaparticionada2(check (llave>=100000 and llave<200000))inherits( tablaparticionada );
create table tablaparticionada3(check (llave>=200000 and llave<300000))inherits( tablaparticionada );
create table tablaparticionada4(check (llave>=300000 and llave<400000))inherits( tablaparticionada );
create table tablaparticionada5(check (llave>=400000 and llave<500000))inherits( tablaparticionada );
create table tablaparticionada6(check (llave>=500000 and llave<600000))inherits( tablaparticionada );
create table tablaparticionada7(check (llave>=600000 and llave<700000))inherits( tablaparticionada );
create table tablaparticionada8(check (llave>=700000 and llave<800000))inherits( tablaparticionada );
create table tablaparticionada9(check (llave>=800000 and llave<900000))inherits( tablaparticionada );
create table tablaparticionada10(check (llave>=900000 and llave<1000000))inherits( tablaparticionada );
create table tablaparticionada11(check (llave>=1000000 and llave<2000000))inherits( tablaparticionada );
create table tablaparticionada12(check (llave>=2000000 and llave<3000000))inherits( tablaparticionada );
create table tablaparticionada13(check (llave>=3000000 and llave<4000000))inherits( tablaparticionada );
create table tablaparticionada14(check (llave>=4000000 and llave<5000000))inherits( tablaparticionada );
create table tablaparticionada15(check (llave>=5000000 and llave<6000001))inherits( tablaparticionada );

–crear reglas
create or replace rule rtablaparticionada1 as
on insert to  tablaparticionada  where (llave >0 and llave<100000) do instead insert into tablaparticionada1 values(new.llave,new.dato);

create or replace rule rtablaparticionada2 as
on insert to  tablaparticionada  where (llave >=100000 and llave<200000) do instead insert into tablaparticionada2 values(new.llave,new.dato);

create or replace rule rtablaparticionada3 as
on insert to  tablaparticionada  where (llave >=200000 and llave<300000) do instead insert into tablaparticionada3 values(new.llave,new.dato);

create or replace rule rtablaparticionada4 as
on insert to  tablaparticionada  where (llave >=300000 and llave<400000) do instead insert into tablaparticionada4 values(new.llave,new.dato);

create or replace rule rtablaparticionada5 as
on insert to  tablaparticionada  where (llave >=400000 and llave<500000) do instead insert into tablaparticionada5 values(new.llave,new.dato);

create or replace rule rtablaparticionada6 as
on insert to  tablaparticionada  where (llave >=500000 and llave<600000) do instead insert into tablaparticionada6 values(new.llave,new.dato);

create or replace rule rtablaparticionada7 as
on insert to  tablaparticionada  where (llave >=600000 and llave<700000) do instead insert into tablaparticionada7 values(new.llave,new.dato);

create or replace rule rtablaparticionada8 as
on insert to  tablaparticionada  where (llave >=700000 and llave<800000) do instead insert into tablaparticionada8 values(new.llave,new.dato);

create or replace rule rtablaparticionada9 as
on insert to  tablaparticionada  where (llave >=800000 and llave<900000) do instead insert into tablaparticionada9 values(new.llave,new.dato);

create or replace rule rtablaparticionada10 as
on insert to  tablaparticionada  where (llave >=900000 and llave<1000000) do instead insert into tablaparticionada10 values(new.llave,new.dato);

create or replace rule rtablaparticionada11 as
on insert to  tablaparticionada  where (llave >=1000000 and llave<2000000) do instead insert into tablaparticionada11 values(new.llave,new.dato);

create or replace rule rtablaparticionada12 as
on insert to  tablaparticionada  where (llave >=2000000 and llave<3000000) do instead insert into tablaparticionada12 values(new.llave,new.dato);

create or replace rule rtablaparticionada13 as
on insert to  tablaparticionada  where (llave >=3000000 and llave<4000000) do instead insert into tablaparticionada13 values(new.llave,new.dato);

create or replace rule rtablaparticionada14 as
on insert to  tablaparticionada  where (llave >=4000000 and llave<5000000) do instead insert into tablaparticionada14 values(new.llave,new.dato);

create or replace rule rtablaparticionada15 as
on insert to  tablaparticionada  where (llave >=5000000 and llave<6000001) do instead insert into tablaparticionada15 values(new.llave,new.dato);

—–para actualizar

create or replace rule ruptablaparticionada1 as
on update to  tablaparticionada  where (old.llave >=0 and old.llave<100000) do instead update   tablaparticionada1  set dato= new.dato where old.llave=llave;

create or replace rule ruptablaparticionada2 as
on update to  tablaparticionada  where (old.llave >=100000 and old.llave<200000) do instead update   tablaparticionada2  set dato= new.dato where old.llave=llave;

create or replace rule ruptablaparticionada3 as
on update to  tablaparticionada  where (old.llave >=200000 and old.llave<300000) do instead update   tablaparticionada3  set dato= new.dato where old.llave=llave;

create or replace rule ruptablaparticionada4 as
on update to  tablaparticionada  where (old.llave >=300000 and old.llave<400000) do instead update   tablaparticionada4  set dato= new.dato where old.llave=llave;

create or replace rule ruptablaparticionada5 as
on update to  tablaparticionada  where (old.llave >=400000 and old.llave<500000) do instead update   tablaparticionada5  set dato= new.dato where old.llave=llave;

create or replace rule ruptablaparticionada6 as
on update to  tablaparticionada  where (old.llave >=500000 and old.llave<600000) do instead update   tablaparticionada6  set dato= new.dato where old.llave=llave;

create or replace rule ruptablaparticionada7 as
on update to  tablaparticionada  where (old.llave >=600000 and old.llave<700000) do instead update   tablaparticionada7  set dato= new.dato where old.llave=llave;

create or replace rule ruptablaparticionada8 as
on update to  tablaparticionada  where (old.llave >=700000 and old.llave<800000) do instead update   tablaparticionada8  set dato= new.dato where old.llave=llave;

create or replace rule ruptablaparticionada9 as
on update to  tablaparticionada  where (old.llave >=800000 and old.llave<900000) do instead update   tablaparticionada9  set dato= new.dato where old.llave=llave;

create or replace rule ruptablaparticionada10 as
on update to  tablaparticionada  where (old.llave >=900000 and old.llave<1000000) do instead update   tablaparticionada10  set dato= new.dato where old.llave=llave;

create or replace rule ruptablaparticionada11 as
on update to  tablaparticionada  where (old.llave >=1000000 and old.llave<2000000) do instead update   tablaparticionada11  set dato= new.dato where old.llave=llave;

create or replace rule ruptablaparticionada12 as
on update to  tablaparticionada  where (old.llave >=2000000 and old.llave<3000000) do instead update   tablaparticionada12  set dato= new.dato where old.llave=llave;

create or replace rule ruptablaparticionada13 as
on update to  tablaparticionada  where (old.llave >=3000000 and old.llave<4000000) do instead update   tablaparticionada13  set dato= new.dato where old.llave=llave;

create or replace rule ruptablaparticionada14 as
on update to  tablaparticionada  where (old.llave >=4000000 and old.llave<5000000) do instead update   tablaparticionada14  set dato= new.dato where old.llave=llave;

create or replace rule ruptablaparticionada15 as
on update to  tablaparticionada  where (old.llave >=5000000 and old.llave<6000001) do instead update   tablaparticionada15  set dato= new.dato where old.llave=llave;

CREATE OR REPLACE FUNCTION insertatablanormal(v bigint)
RETURNS void AS
$body$
DECLARE
i bigint;
BEGIN
for i in 1..v loop
insert into tablanormal values (i, ‘1234567890abcd’);
end loop;
END;
$body$
LANGUAGE ‘plpgsql’ VOLATILE;

CREATE OR REPLACE FUNCTION insertatablaparticionada(v bigint)
RETURNS void AS
$body$
DECLARE
i bigint;
BEGIN
for i in 1..v loop
insert into tablaparticionada values (i, ‘1234567890abcd’);
end loop;
END;
$body$
LANGUAGE ‘plpgsql’ VOLATILE;

truncate tablanormal;
truncate tablaparticionada;
select insertatablanormal(1000000);
select insertatablaparticionada(1000000);
SELECT * FROM tablanormal ;
SELECT * FROM tablaparticionada;
UPDATE tablanormal SET dato = ’00ABCDEFGHI123′;
UPDATE tablaparticionada SET dato = ‘AAABCDEFG12345’;
DELETE FROM tablanormal;
DELETE FROM tablaparticionada;

Leave a Reply

Your email address will not be published. Required fields are marked *

javaprograma
wine
base de datos
php
Cannot send session cache limiter – headers already sent
Warning: Cannot send session cache limiter – headers already sent (output started at /home/httpd/vhosts/martinalia.com/httpdocs/inc-public.php3(20) : eval()’d code:7) in /home/httpd/vhosts/martinalia.com/httpdocs/inc-public.php3(20) :
Read more.
Particionar tabla postgres, y llenar automaticamente con registros
El siguiente script es para crear una tabla fragmentada horizontalmente y llenar automaticamente con un procedimiento almacenado. –Postgres create table
Read more.
Particionar tabla Oracle, y llenar automaticamente con registros
Para fragmentar horizontal una tabla y llenar automaticamente . create table tablanormal ( llave integer,dato varchar(10) ); create table tablaparticionada
Read more.
Particionar tabla SQL Server, y llenar automaticamente con registros
CREATE TABLE tablanormal ( llave bigint primary key, dato varchar(15) );
Read more.
WMI error al desinstalar Sqlserver 2008
Detenga el servicio WMI: Ir a Inicio / Ejecutar, escriba cmd en la pantalla que se abre tipo: net stop
Read more.
Violation of PRIMARY KEY constraint
Violation of PRIMARY KEY constraint ‘PK_TABLA’. Cannot insert duplicate key in object ‘dbo.TABLA’. The statement has been terminated.
Read more.
INSTALAR JBOSS 7 EN CENTOS 6.4
INSTALAR JBOSS 7 REALIZAR LO SIGUIENTE ]#yum install java-1.7.0-openjdk ]#java -version ]#cd lx-jboss71-jdk7-jdbcpg84/ ]#cp /usr/share/ ]#cp jboss-as-7.1.1.Final.zip /usr/share/ ]#cd /usr/share/
Read more.
Crear Tabla con función en Postgres 8.4 y 9.x
Al realizar una funcion que cree autoamticamente una tabla con parametros, me econtre con un error que decia  ERROR:  syntax
Read more.
CONFIGURAR APACHE CON JBOSS 7.1
Observar que Jboss este añadido el apj en el Administrador, si no esta añadirlo.  Instalar apache en tu centos ]#yum
Read more.
Crear y asignar autoincremental a columna campo tipo serial
Cuando necesites crear un campo y quieres abregale un secuencial.   CREATE SEQUENCE esquema.tabla_tbl_id_seq; ALTER TABLE esquema.tabla ADD COLUMN tbl_id
Read more.