Link com exemplos da utilização do DBlink
http://pt.wikibooks.org/wiki/PostgreSQL_Prático/Replicação
Esta página contem informações úteis para o dia a dia de meu trabalho
quinta-feira, 18 de fevereiro de 2010
quarta-feira, 13 de janeiro de 2010
Alguns comandos (sql) Postgis
meu_DB=# SELECT gid, AsText(the_geom) AS the_geom, name FROM bc_roads;
gid | the_geom | name
-----+---------------------------------------------------------------------------------------+-------------
1 | MULTILINESTRING((1205902.3 460882.2,1205906.3 460789.7)) | No 1 Rd
2 | MULTILINESTRING((1205906.3 460789.7,1205907.3 460776.4)) | No 1 Rd
3 | MULTILINESTRING((1205907.3 460776.4,1205913.6 460638.8)) | No 1 Rd
4 | MULTILINESTRING((1205913.6 460638.8,1205919.6 460513.4)) | No 1 Rd
5 | MULTILINESTRING((1205919.6 460513.4,1205920.8 460482)) | No 1 Rd
6 | MULTILINESTRING((1211706.8 462048.2,1211710.3 461877)) | Seaham Cres
7 | MULTILINESTRING((1212105 462099.5,1212160.1 462102.5)) | Seahaven Pl
(7 registros)
Porém, haverá momentos em que restrições serão necessárias para reduzir o número de campos retornados. No caso de restrições baseadas em atributos, apenas use a mesma sintaxe normal de SQL com uma tabela não espacial. No caso de restrições espaciais, os operadores seguintes são disponíveis/úteis:
&& Este operador diz se o retângulo envolvente (bounding box) de uma geometria intersecta o retângulo envolvente de outra.
~= Estes operadores testam se duas geometrias são geometricamente idênticas. Por exemplo, se "POLYGON((0 0,1 1,1 0,0 0))" é igual à "POLYGON((0 0,1 1,1 0,0 0))" (nesse caso é!).
= Este operador é um pouco mais "ingênuo", e só testa se o retângulo envolvente (bounding box) das geometrias é o mesmo.
Logo, você pode usar estes operadores em consultas. Note que ao especificar geometrias e retângulos na linha de comando SQL, você tem que transformar as representações de caracteres (string) explicitamente em geometrias usando a função "GeometryFromText () ". Por exemplo:
SELECT name FROM bc_roads
WHERE the_geom ~= GeomFromText('MULTILINESTRING((1212105 462099.5,1212160.1 462102.5))',-1);
A consulta anterior devolveria o único registro da tabela "bc_roads" no qual a geometria era igual aquele valor.
Ao usar o operador "&& ", você pode especificar tanto um retângulo (BOX3D) como característica de comparação como uma geometria. Quando você especifica uma geometria é o seu retângulo envolvente (bounding box) que será usado para a comparação.
SELECT name FROM bc_roads
WHERE the_geom && GeomFromText('POLYGON((1212105 462099.5,1212160.1 462102.5, 1212105 462099.5))',-1);
Então, a consulta anterior usará o retângulo envolvente do polígono para propósitos de comparação.
A consulta espacial mais comum provavelmente será uma consulta "frame-based", usada por um software cliente, como um visualizador de dados ou servidor de mapas na web, é obter o "map-frame" (representação gráfica - figura) para exibição. Usando um objeto "BOX3D" para o "frame", essa consulta iria ser como demonstrado abaixo:
SELECT AsText(the_geom) AS the_geom
FROM bc_roads
WHERE the_geom && SetSRID('BOX3D(1212105 462099.5,1212160.1 462102.5)'::box3d,-1);
Note que o uso do SRID, especifica a projeção do BOX3D. O valor -1 é usado para indicar que nenhum SRID é especificado.
gid | the_geom | name
-----+---------------------------------------------------------------------------------------+-------------
1 | MULTILINESTRING((1205902.3 460882.2,1205906.3 460789.7)) | No 1 Rd
2 | MULTILINESTRING((1205906.3 460789.7,1205907.3 460776.4)) | No 1 Rd
3 | MULTILINESTRING((1205907.3 460776.4,1205913.6 460638.8)) | No 1 Rd
4 | MULTILINESTRING((1205913.6 460638.8,1205919.6 460513.4)) | No 1 Rd
5 | MULTILINESTRING((1205919.6 460513.4,1205920.8 460482)) | No 1 Rd
6 | MULTILINESTRING((1211706.8 462048.2,1211710.3 461877)) | Seaham Cres
7 | MULTILINESTRING((1212105 462099.5,1212160.1 462102.5)) | Seahaven Pl
(7 registros)
Porém, haverá momentos em que restrições serão necessárias para reduzir o número de campos retornados. No caso de restrições baseadas em atributos, apenas use a mesma sintaxe normal de SQL com uma tabela não espacial. No caso de restrições espaciais, os operadores seguintes são disponíveis/úteis:
&& Este operador diz se o retângulo envolvente (bounding box) de uma geometria intersecta o retângulo envolvente de outra.
~= Estes operadores testam se duas geometrias são geometricamente idênticas. Por exemplo, se "POLYGON((0 0,1 1,1 0,0 0))" é igual à "POLYGON((0 0,1 1,1 0,0 0))" (nesse caso é!).
= Este operador é um pouco mais "ingênuo", e só testa se o retângulo envolvente (bounding box) das geometrias é o mesmo.
Logo, você pode usar estes operadores em consultas. Note que ao especificar geometrias e retângulos na linha de comando SQL, você tem que transformar as representações de caracteres (string) explicitamente em geometrias usando a função "GeometryFromText () ". Por exemplo:
SELECT name FROM bc_roads
WHERE the_geom ~= GeomFromText('MULTILINESTRING((1212105 462099.5,1212160.1 462102.5))',-1);
A consulta anterior devolveria o único registro da tabela "bc_roads" no qual a geometria era igual aquele valor.
Ao usar o operador "&& ", você pode especificar tanto um retângulo (BOX3D) como característica de comparação como uma geometria. Quando você especifica uma geometria é o seu retângulo envolvente (bounding box) que será usado para a comparação.
SELECT name FROM bc_roads
WHERE the_geom && GeomFromText('POLYGON((1212105 462099.5,1212160.1 462102.5, 1212105 462099.5))',-1);
Então, a consulta anterior usará o retângulo envolvente do polígono para propósitos de comparação.
A consulta espacial mais comum provavelmente será uma consulta "frame-based", usada por um software cliente, como um visualizador de dados ou servidor de mapas na web, é obter o "map-frame" (representação gráfica - figura) para exibição. Usando um objeto "BOX3D" para o "frame", essa consulta iria ser como demonstrado abaixo:
SELECT AsText(the_geom) AS the_geom
FROM bc_roads
WHERE the_geom && SetSRID('BOX3D(1212105 462099.5,1212160.1 462102.5)'::box3d,-1);
Note que o uso do SRID, especifica a projeção do BOX3D. O valor -1 é usado para indicar que nenhum SRID é especificado.
quinta-feira, 31 de dezembro de 2009
Matriz Lógica
Os projetos são impulsionados por uma lógica relativamente linear: os insumos levam a atividades, que levam a produtos que levam a resultados a qual leva a avaliação (metas).
Insumos -> Atividades -> Produtos -> Resultados -> Metas
quarta-feira, 18 de novembro de 2009
terça-feira, 10 de novembro de 2009
Verificar se o conteúdo de um campo postgresql é numérico
O meu problema é verificar se o conteúdo de um campo texto (resposta) é numérico.
select pergunta, resposta
from dados.itemquest
where (resposta ~ '^[0-9.-]+$');
A expressão:
where (resposta ~ '^[0-9.-]+$');
retorna true para conteúdo numérico.
select pergunta, resposta
from dados.itemquest
where (resposta ~ '^[0-9.-]+$');
A expressão:
where (resposta ~ '^[0-9.-]+$');
retorna true para conteúdo numérico.
quarta-feira, 4 de novembro de 2009
Backup banco postgres
O script abaixo serve para fazer o backup de um banco Postgres inserindo a data e hora da tarefa no nome do arquivo
# Determinado da data e hora e ano
ano=`date +%Y`;
mes=`date +%m`;
hora=`date +%H`;
min=`date +%M`;
let dia=10\#`date +%d`;
#hora = 'date +%h';
if ($dia<10) then
j=0$dia;
else
j=$dia;
fi
dia=$j;
j="";
D=$dia
M=$mes
A=$ano
# Definindo o usuario e senha do banco de dados
export PGUSER="USUARIO DO BANCO";
export PGPASSWORD="SENHA DO BANCO";
#Fazendo o backup
pg_dump -i -h SERVIDOR -p 5432 -U "USUARIO DO BANCO" -F c -b -v -f /dados/backup/MI_SOCIAL/CONVENIO_DB$ano$mes$dia$hora$min.backup "CONVENIO_DB"
# Determinado da data e hora e ano
ano=`date +%Y`;
mes=`date +%m`;
hora=`date +%H`;
min=`date +%M`;
let dia=10\#`date +%d`;
#hora = 'date +%h';
if ($dia<10) then
j=0$dia;
else
j=$dia;
fi
dia=$j;
j="";
D=$dia
M=$mes
A=$ano
# Definindo o usuario e senha do banco de dados
export PGUSER="USUARIO DO BANCO";
export PGPASSWORD="SENHA DO BANCO";
#Fazendo o backup
pg_dump -i -h SERVIDOR -p 5432 -U "USUARIO DO BANCO" -F c -b -v -f /dados/backup/MI_SOCIAL/CONVENIO_DB$ano$mes$dia$hora$min.backup "CONVENIO_DB"
Assinar:
Postagens (Atom)