pgScript: um Elefante de barriga cheia - Presentation Transcript
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Um Elefante de barriga cheia
Dickson S. Guedes
guedes@guedesoft.net
FISL Porto Alegre, 2009
26 de junho de 2009
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
O que ser´ abordado...
a
Introdu¸˜o
ca
Gera¸˜o de Dados
ca
Ferramentas especializadas
pgScript
Sobre o pgScript
Funcionalidades do pgScript
Exemplificando
Vari´veis, Registros e Sa´
a ıda
Condi¸˜es
co
Gerando dados aleat´rios
o
Finalizando
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Gera¸˜o de Dados
ca
Ciclo de vida do desenvolvimento
An´lise
a
Modelagem
Desenvolvimento
Teste
Suporte e Manuten¸˜o
ca
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Gera¸˜o de Dados
ca
Solu¸oes manuais (?)
c˜
INSERT INTO ... VALUES ...
ctrl+c ctrl+v
para os amantes do vim: v y p
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Gera¸˜o de Dados
ca
Solu¸oes via ferramentas auxiliares
c˜
BrOffice Planilha
Exporta¸˜o em CSV
ca
sed, awk, ...
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Gera¸˜o de Dados
ca
Solu¸oes via linguagens de programa¸˜o
c˜ ca
c, c++, ...
perl, python, ruby, java, ...
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Gera¸˜o de Dados
ca
Solu¸oes baseadas em banco de dados
c˜
pl/pgsql
INSERT INTO ... SELECT ...
random(), generate series()
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Ferramentas especializadas
Solu¸oes Propriet´rias
c˜ a
EMS Data Generator for PostgreSQL
DTM Data Generator
GS Data Generator
DB Data Generator
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Ferramentas especializadas
Solu¸oes Livres
c˜
dbgen (TPC-H)
GenerateData.com (Web, Java)
Data::Faker (Perl)
datagen,faker (Ruby)
DBMonster,dgMaster (Java)
pgScript (C++)
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Sobre o pgScript
Sobre o pgScript
Google Summer of Code 2008
pgUnitTest
pgScript
Criado por Mickael Deloison
Integrado ao pgAdminIII
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Funcionalidades do pgScript
Vari´veis
a
DECLARE @variavel ´ opcional
e
Atribui¸˜o com SET @variavel = valor
ca
PRINT @variavel
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Funcionalidades do pgScript
Controle de Fluxo
Teste de Condi¸˜o: IF
ca
Estrutura de La¸o: WHILE
c
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Funcionalidades do pgScript
Gerando dados aleat´rios
o
INTEGER ( min, max, [sequence], [seed] );
REAL ( min, max, precision, [sequence], [seed] );
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Funcionalidades do pgScript
Gerando dados aleat´rios
o
INTEGER ( min, max, [sequence], [seed] );
REAL ( min, max, precision, [sequence], [seed] );
DATE ( min, max, [sequence], [seed] );
TIME ( min, max, [sequence], [seed] );
DATETIME ( min, max, [sequence], [seed] );
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Funcionalidades do pgScript
Gerando dados aleat´rios
o
INTEGER ( min, max, [sequence], [seed] );
REAL ( min, max, precision, [sequence], [seed] );
DATE ( min, max, [sequence], [seed] );
TIME ( min, max, [sequence], [seed] );
DATETIME ( min, max, [sequence], [seed] );
STRING ( min, max, [nb], [seed] );
REGEX ( regex, [seed] );
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Funcionalidades do pgScript
Gerando dados aleat´rios especiais
o
FILE ( path, [sequence], [seed], [encoding] );
REFERENCE ( table, column, [sequence], [seed] );
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Vari´veis, Registros e Sa´
a ıda
Um script simples
DECLARE @R { @nome, @sobrenome, @email };
SET @R[0][’@nome’] = ’Dickson’;
SET @R[0][’@sobrenome’] = ’Guedes’;
SET @R[0][’@email’] = ’guedes at guedesoft dot net’;
PRINT @R[0][’@nome’];
PRINT @R[0][1];
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Vari´veis, Registros e Sa´
a ıda
Um script simples - Resultado
[PGSCRIPT ] Dickson
[PGSCRIPT ] Guedes
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Condi¸˜es
co
Testando condi¸oes
c˜
SET @total_teste=SELECT count(*) as t FROM teste;
PRINT @total_teste;
PRINT @total_teste[0][0];
IF CAST(@total_teste AS INTEGER) < 4
BEGIN
PRINT ’Total de registros ´ menor que 4!’;
e
END
ELSE
BEGIN
PRINT ’Total de registros ´ maior que 4!’;
e
END
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Condi¸˜es
co
Testando condi¸oes - Resultado
c˜
[QUERY ] SELECT count(*) as t FROM teste
[PGSCRIPT ] (5)
[PGSCRIPT ] 5
[PGSCRIPT ] Total de registros ´ maior que 4!
e
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Gerando dados aleat´rios
o
Gerando strings aleat´rias
o
SET @G = STRING(10, 20, 2);
SET @A = @G; -- @A recebe uma string aleatoria
SET @B = @G; -- @B recebe *outra* string aleatoria
PRINT @G; -- Imprime uma terceira string aleatoria
PRINT @A; -- Imprime conteudo da variavel @A
PRINT @B; -- Imprime conteudo da variavel @B
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Gerando dados aleat´rios
o
Um exemplo mais elaborado
CREATE TABLE tb_conta_corrente (
id_conta serial PRIMARY KEY,
descriao varchar(60),
data_abertura date
);
CREATE TABLE tb_movimento_conta (
id_movimento serial PRIMARY KEY,
id_conta integer REFERENCES tb_conta_corrente(id_conta)
data_hora_movimento timestamp,
detalhe varchar(20),
valor_movimento numeric(17,2)
);
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Gerando dados aleat´rios
o
Criando o script no pgAdminIII - Declarando
SET @gen_descricao = STRING(10,20,3);
SET @gen_data = DATE(’2000-01-02’,’2009-02-01’);
SET @gen_data_hora = DATETIME(’2000-01-02 00:00:00’,’2009-0
SET @gen_detalhe = REGEX(’[a-f]{10}[0-9]{10}’);
SET @gen_valor = REAL(0.01,99999999.99,2);
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Gerando dados aleat´rios
o
Criando o script no pgAdminIII - Inserindo
SET @i = 0;
WHILE @i < 20
BEGIN
INSERT INTO tb_conta_corrente
(descricao, data_abertura)
VALUES(’@gen_descricao’, ’@gen_data’);
SET @i = @i + 1;
END
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Gerando dados aleat´rios
o
Criando o script no pgAdminIII - Inserindo
SET @gen_id_conta =
REFERENCE(’tb_conta_corrente’,’id_conta’);
SET @i = 0;
WHILE @i < 10
BEGIN
INSERT INTO tb_movimento_conta
(id_conta, data_hora_movimento,
detalhe, valor_movimento)
VALUES(@gen_id_conta, ’@gen_data_hora’,
’@gen_detalhe’, @gen_valor);
SET @i = @i + 1;
END
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Gerando dados aleat´rios
o
Saida do pgScript
INSERT INTO tb_conta_corrente (descricao, data_abertura)
VALUES(’psGlh7NnfuqO9TdgZOG Ml1tqwVvLp9ByQpbRhZ YWNE08oCoj
’2007-07-05’)
INSERT INTO tb_conta_corrente (descricao, data_abertura)
VALUES(’gnb8g5Eqh47onb63na vL4aggsTcysvbOGVQ ir5CWsX7zBP’,
’2008-01-20’)
INSERT INTO tb_conta_corrente (descricao, data_abertura)
VALUES(’u2eK4E5k0UvEu5 aDeQfV9pvizSCdWn9p y1GG4efGI7BX8lkX
INSERT INTO tb_conta_corrente (descricao, data_abertura)
VALUES(’wbvHnHs9yj4GnO3WQVOW Lz9feLSUrk1fRHHNvCX s8MK3i0l4
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Gerando dados aleat´rios
o
Saida do pgScript
INSERT INTO tb_movimento_conta (id_conta, data_hora_movimen
VALUES(336, ’2007-08-22 20:35:02’,
’efbeeaceef8827613869’, 8.26)
INSERT INTO tb_movimento_conta (id_conta, data_hora_movimen
VALUES(360, ’2008-03-11 11:13:07’,
’fcacdedcbc8414665323’, 8.85)
INSERT INTO tb_movimento_conta (id_conta, data_hora_movimen
VALUES(109, ’2002-06-17 01:35:00’, ’eafffdfcea7098959381’,
INSERT INTO tb_movimento_conta (id_conta, data_hora_movimen
VALUES(310, ’2007-01-19 01:28:32’, ’bfcedceddd1948647555’,
INSERT INTO tb_movimento_conta (id_conta, data_hora_movimen
VALUES(283, ’2006-06-06 10:54:03’, ’cba
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Questionamento
?
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introdu¸˜o
ca pgScript Exemplificando Finalizando
Contato
Dickson S. Guedes
guedes@guedesoft.net (email, gtalk)
guediz (skype)
Guedes em irc.freenode.net #postgresql-br #postgresql
Um Elefante de barriga cheia FISL Porto Alegre, 2009
0 comments
Post a comment