Bom dia ! Estou retomando este trabalho e tenho algumas dúvidas. Obrigado.
1) Tentei executar o "insert as select" que voce me passou e está dando o
seguinte erro:
cdrger=# \i insert.sql
psql:insert.sql:18: ERRO: não pode converter tipo tid para character
varying
O que significa o ctid ? Será que é isso que ele está reclamando ? Estou
executando isso:
insert into TESTE
select *
from cdrger20090319
where (
cast(
substring(
cast(ctid as varchar(20)),
2,
position(',' in cast(ctid as varchar(20)))-2 )
as int) * 199+
cast(
substring(
cast(ctid as varchar(20)),
position(',' in cast(ctid as varchar(20)))+1,
length(rtrim(cast(ctid as varchar(20)))) -
position(',' in cast(ctid as
varchar(20)))-1 )
as int) )
% 10=1
2) Como eu faria um loop para fazer esse insert para cada uma das tabelas
cdrger* da minha base ? Por exemplo, na base que estou testando tenho as
tabelas abaixo. Quando for executar o script numa base qualquer poderei ter
n tabelas do tipo cdger*. O objetivo é gerar um "dump" ou algo do tipo com
10% dos dados (ou x%) para cada uma das tabelas e depois tenho que
"importar" essas tabelas "reduzidas" numa base que estará em um notebook da
área comercial e estas devem ter o mesmo nome das tabelas de origem.
cdrger=# \dt
Lista de relações
Esquema | Nome | Tipo | Dono
---------+----------------+--------+----------
public | cdrger20090220 | tabela | postgres
public | cdrger20090228 | tabela | postgres
public | cdrger20090301 | tabela | postgres
public | cdrger20090303 | tabela | postgres
public | cdrger20090305 | tabela | postgres
public | cdrger20090311 | tabela | postgres
public | cdrger20090312 | tabela | postgres
public | cdrger20090313 | tabela | postgres
public | cdrger20090314 | tabela | postgres
public | cdrger20090315 | tabela | postgres
public | cdrger20090316 | tabela | postgres
public | cdrger20090317 | tabela | postgres
public | cdrger20090318 | tabela | postgres
public | cdrger20090319 | tabela | postgres
public | cdrger20090320 | tabela | postgres
public | teste | tabela | postgres
(16 registros)
Em 23 de março de 2010 14:25,
<[email protected]>escreveu:
> Send pgbr-geral mailing list submissions to
> [email protected]
>
> To subscribe or unsubscribe via the World Wide Web, visit
>
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
> or, via email, send a message with subject or body 'help' to
> [email protected]
>
> You can reach the person managing the list at
> [email protected]
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of pgbr-geral digest..."
>
> Tópicos de Hoje:
>
> 1. Re: Tutoriais para aprender a fazer queries usando Latitudes
> e Longitudes? (George Silva)
> 2. Re: Tutoriais para aprender a fazer queries usando Latitudes
> e Longitudes? (Andre Lopes)
> 3. Re: AJUDA COM FUNÇÃO (Mozart Hasse)
> 4. Re: Como configurar e conectar o PHPpgAdmin? (JotaComm)
> 5. Re: Raid 10 (JotaComm)
> 6. Re: AJUDA COM FUNÇÃO (pgplsql) (JotaComm)
>
>
> ---------- Mensagem encaminhada ----------
> From: "Mozart Hasse" <[email protected]>
> To: <[email protected]>
> Date: Tue, 23 Mar 2010 13:19:20 -0300
> Subject: Re: [pgbr-geral] AJUDA COM FUNÇÃO
> Oi Jose,
>
> Para pegar aproximadamente 1 de cada 10 registros da sua tabela, faça o
> seguinte:
>
> --insert into ONDEVOCEQUISER
> select *
> from SUATABELA
> where (
> cast(
> substring(
> cast(ctid as varchar(20)),
> 2,
> position(',' in cast(ctid as varchar(20)))-2 )
> as int) * 199+
> cast(
> substring(
> cast(ctid as varchar(20)),
> position(',' in cast(ctid as varchar(20)))+1,
> length(rtrim(cast(ctid as varchar(20)))) - position(',' in cast(ctid as
> varchar(20)))-1 )
> as int) )
> % 10=1
>
> Troque o 10 da última linha pela taxa de amostragem que te convier.
> (Sim, eu também sinto uma falta desgraçada do rowid do Oracle)
> Devido ao tamanho dos registros influenciarem na distribuição dos ctids,
> você pode não ter *exatamente* 10% dos registros no caso acima (apesar de
> eu
> duvidar que a margem de erro tire teu sono). Isso pode ser minimizado
> rodando
> um vacuum full antes da exportação ou escolhendo outro primo no lugar do
> 199
> que seja mais próximo do número de registros por bloco da tabela desejada.
>
> Atenciosamente,
>
> Mozart Hasse
>
> ---------- Mensagem encaminhada ----------
> From: JotaComm <[email protected]>
> To: Comunidade PostgreSQL Brasileira <[email protected]>
> Date: Tue, 23 Mar 2010 14:08:16 -0300
> Subject: Re: [pgbr-geral] AJUDA COM FUNÇÃO (pgplsql)
> Olá,
>
> Em 23 de março de 2010 11:28, Jose Luis Ramos <[email protected]
> > escreveu:
>
>> Gostaria de uma ajuda no seguinte: tenho várias tabelas com o mesmo
>> prefixo:
>>
>> cdrger=# \dt
>> Lista de relações
>> Esquema | Nome | Tipo | Dono
>> ---------+----------------+--------+----------
>> public | cdrger20090227 | tabela | postgres
>> public | cdrger20090306 | tabela | postgres
>> public | cdrger20090311 | tabela | postgres
>> public | cdrger20090319 | tabela | postgres
>> public | cdrger20090320 | tabela | postgres
>> public | cdrger20090324 | tabela | postgres
>> public | cdrger20090325 | tabela | postgres
>> public | cdrger20090326 | tabela | postgres
>> public | cdrger20090327 | tabela | postgres
>> public | cdrger20090328 | tabela | postgres
>> public | cdrger20090329 | tabela | postgres
>> public | cdrger20090330 | tabela | postgres
>> (12 registros)
>>
>> Preciso fazer uma funçaõ que, para cada tabela do banco com esse prefixo
>> (cdrger*), eu leia um registro, grave de alguma forma (por exemplo em uma
>> tab temp), pulo x registros, gravo o próximo, pulo mais x registros, e assim
>> por diante. O objetivo é gerar uma base menor que a base que estou lendo.
>> Depois tenho que exportar essa ou essas tabelas temp geradas e importar em
>> uma base de um notebook para ser utilizada pela área comercial da empresa.
>> Se alguém puder me ajudar eu agradeço. Conheço Oracle, mas estou começando
>> com PostgreSQL esta semana ... Obrigado.
>>
>
>
>
--
Jose Luis Ramos Jr
Campinas - SP
Oracle OCP DBA 8i, 9i,10g
Fone: 19-37056793
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral