pgScript: um Elefante de barriga cheia
-
Upload
dickson-s-guedes -
Category
Technology
-
view
1.062 -
download
1
description
Transcript of pgScript: um Elefante de barriga cheia
Introducao pgScript Exemplificando Finalizando
Um Elefante de barriga cheia
Dickson S. [email protected]
FISL Porto Alegre, 2009
26 de junho de 2009
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
O que sera abordado...
IntroducaoGeracao de DadosFerramentas especializadas
pgScriptSobre o pgScriptFuncionalidades do pgScript
ExemplificandoVariaveis, Registros e SaıdaCondicoesGerando dados aleatorios
Finalizando
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Geracao de Dados
Ciclo de vida do desenvolvimento
I Analise
I Modelagem
I Desenvolvimento
I Teste
I Suporte e Manutencao
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Geracao de Dados
Solucoes manuais (?)
I INSERT INTO ... VALUES ...
I ctrl+c ctrl+v
I para os amantes do vim: v y p
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Geracao de Dados
Solucoes via ferramentas auxiliares
I BrOffice Planilha
I Exportacao em CSV
I sed, awk, ...
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Geracao de Dados
Solucoes via linguagens de programacao
I c, c++, ...
I perl, python, ruby, java, ...
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Geracao de Dados
Solucoes baseadas em banco de dados
I pl/pgsql
I INSERT INTO ... SELECT ...
I random(), generate series()
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Ferramentas especializadas
Solucoes Proprietarias
I EMS Data Generator for PostgreSQL
I DTM Data Generator
I GS Data Generator
I DB Data Generator
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Ferramentas especializadas
Solucoes Livres
I dbgen (TPC-H)
I GenerateData.com (Web, Java)
I Data::Faker (Perl)
I datagen,faker (Ruby)
I DBMonster,dgMaster (Java)
I pgScript (C++)
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Sobre o pgScript
Sobre o pgScript
I Google Summer of Code 2008
I pgUnitTest
I pgScript
I Criado por Mickael Deloison
I Integrado ao pgAdminIII
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Funcionalidades do pgScript
Variaveis
I DECLARE @variavel e opcional
I Atribuicao com SET @variavel = valor
I PRINT @variavel
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Funcionalidades do pgScript
Controle de Fluxo
I Teste de Condicao: IF
I Estrutura de Laco: WHILE
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Funcionalidades do pgScript
Gerando dados aleatorios
I INTEGER ( min, max, [sequence], [seed] );
I REAL ( min, max, precision, [sequence], [seed] );
I DATE ( min, max, [sequence], [seed] );
I TIME ( min, max, [sequence], [seed] );
I DATETIME ( min, max, [sequence], [seed] );
I STRING ( min, max, [nb], [seed] );
I REGEX ( regex, [seed] );
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Funcionalidades do pgScript
Gerando dados aleatorios
I INTEGER ( min, max, [sequence], [seed] );
I REAL ( min, max, precision, [sequence], [seed] );
I DATE ( min, max, [sequence], [seed] );
I TIME ( min, max, [sequence], [seed] );
I DATETIME ( min, max, [sequence], [seed] );
I STRING ( min, max, [nb], [seed] );
I REGEX ( regex, [seed] );
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Funcionalidades do pgScript
Gerando dados aleatorios
I INTEGER ( min, max, [sequence], [seed] );
I REAL ( min, max, precision, [sequence], [seed] );
I DATE ( min, max, [sequence], [seed] );
I TIME ( min, max, [sequence], [seed] );
I DATETIME ( min, max, [sequence], [seed] );
I STRING ( min, max, [nb], [seed] );
I REGEX ( regex, [seed] );
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Funcionalidades do pgScript
Gerando dados aleatorios especiais
I FILE ( path, [sequence], [seed], [encoding] );
I REFERENCE ( table, column, [sequence], [seed] );
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Variaveis, Registros e Saı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
Introducao pgScript Exemplificando Finalizando
Variaveis, Registros e Saıda
Um script simples - Resultado
[PGSCRIPT ] Dickson[PGSCRIPT ] Guedes
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Condicoes
Testando condicoes
SET @total_teste=SELECT count(*) as t FROM teste;
PRINT @total_teste;PRINT @total_teste[0][0];
IF CAST(@total_teste AS INTEGER) < 4BEGINPRINT ’Total de registros e menor que 4!’;
ENDELSEBEGINPRINT ’Total de registros e maior que 4!’;
END
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Condicoes
Testando condicoes - Resultado
[QUERY ] SELECT count(*) as t FROM teste[PGSCRIPT ] (5)[PGSCRIPT ] 5[PGSCRIPT ] Total de registros e maior que 4!
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Gerando dados aleatorios
Gerando strings aleatorias
SET @G = STRING(10, 20, 2);SET @A = @G; -- @A recebe uma string aleatoriaSET @B = @G; -- @B recebe *outra* string aleatoriaPRINT @G; -- Imprime uma terceira string aleatoriaPRINT @A; -- Imprime conteudo da variavel @APRINT @B; -- Imprime conteudo da variavel @B
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Gerando dados aleatorios
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
Introducao pgScript Exemplificando Finalizando
Gerando dados aleatorios
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-04-01 00:00:00’);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
Introducao pgScript Exemplificando Finalizando
Gerando dados aleatorios
Criando o script no pgAdminIII - Inserindo
SET @i = 0;WHILE @i < 20BEGIN
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
Introducao pgScript Exemplificando Finalizando
Gerando dados aleatorios
Criando o script no pgAdminIII - Inserindo
SET @gen_id_conta =REFERENCE(’tb_conta_corrente’,’id_conta’);
SET @i = 0;WHILE @i < 10BEGIN
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
Introducao pgScript Exemplificando Finalizando
Gerando dados aleatorios
Saida do pgScript
INSERT INTO tb_conta_corrente (descricao, data_abertura)VALUES(’psGlh7NnfuqO9TdgZOG Ml1tqwVvLp9ByQpbRhZ YWNE08oCoj9U’,
’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 y1GG4efGI7BX8lkXF’, ’2002-06-01’)
INSERT INTO tb_conta_corrente (descricao, data_abertura)VALUES(’wbvHnHs9yj4GnO3WQVOW Lz9feLSUrk1fRHHNvCX s8MK3i0l49CpTN’, ’2006-12-05’)
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Gerando dados aleatorios
Saida do pgScript
INSERT INTO tb_movimento_conta (id_conta, data_hora_movimento, detalhe, valor_movimento)VALUES(336, ’2007-08-22 20:35:02’,
’efbeeaceef8827613869’, 8.26)INSERT INTO tb_movimento_conta (id_conta, data_hora_movimento, detalhe, valor_movimento)VALUES(360, ’2008-03-11 11:13:07’,
’fcacdedcbc8414665323’, 8.85)INSERT INTO tb_movimento_conta (id_conta, data_hora_movimento, detalhe, valor_movimento)VALUES(109, ’2002-06-17 01:35:00’, ’eafffdfcea7098959381’, 2.656489693E+7)
INSERT INTO tb_movimento_conta (id_conta, data_hora_movimento, detalhe, valor_movimento)VALUES(310, ’2007-01-19 01:28:32’, ’bfcedceddd1948647555’, 7.622237841E+7)
INSERT INTO tb_movimento_conta (id_conta, data_hora_movimento, detalhe, valor_movimento)VALUES(283, ’2006-06-06 10:54:03’, ’cbaaebeeac3201828714’, 6.951338185E+7)
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Questionamento
?
Um Elefante de barriga cheia FISL Porto Alegre, 2009
Introducao pgScript Exemplificando Finalizando
Contato
I Dickson S. Guedes
I [email protected] (email, gtalk)
I guediz (skype)
I Guedes em irc.freenode.net #postgresql-br #postgresql
Um Elefante de barriga cheia FISL Porto Alegre, 2009