Qlik Community

Ask a Question

Brasil

Announcements
QlikWorld Online 2021, May 10-12: Our Free, Virtual, Global Event REGISTER TODAY
cancel
Showing results for 
Search instead for 
Did you mean: 
aderlanrm
Partner
Partner

MySQL to QVD

O arquivo anexo é o segundo de uma serie de extratores que tem um exemplo de como é possível fazer um extrator de MySQL para QVD.

No desenvolvimento em camadas, um aplicativo assim é útil principalmente na primeira, onde os dados são transformados diretamente para QVD, exatamente como estão disponíveis na origem.

Um pequeno ajuste no script, pode gerar arquivos texto com qualquer separador de campo ou incluir uma regra para gravar apenas as tabelas que contém dados, isso fica por conta da criatividade de cada um.

Também tem uma pequena análise do banco de dados, com alguns gráficos e listas da estrutura.

Espero que seja útil, abraço.

Aderlan Rodrigues

aderlan.rodrigues@qway.com.br

Aderlan Rodrigues
Professor, Analista e Arquiteto de Dados
? (41) 9 9917-0869 ? www.BIdeAZ.com.br ? Youtube/bideaz.ead ? Instagram/bideaz.ead

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Labels (6)
1 Solution

Accepted Solutions
Not applicable

Como contribuição, segue um pequeno script que usei para extrair todas as tabelas de um determinado banco de dados MySQL (via ODBC), e gerar um QVD para cada tabela, sem qualquer transformação de dados. Está bastante comentado porque foi usado para fins didáticos, e penso que pode interessar ao grupo.

ODBC CONNECT TO MySQL;

set BD = 'nomedobanco';
TRACE Banco de dados '$(BD)' selecionado.;

TRACE Buscando e carregando tabelas do banco.;

Tabelas:
SQL select TABLE_NAME from information_schema.tables where table_schema = '$(BD)';

set TabelaAtual = 'NULO';

let Registros = NoOfRows('Tabelas');

TRACE Encontrada(s) $(Registros) tabela(s) no banco de dados $(BD).;

for i = 0 to $(Registros)-1
  LET TabelaAtual = peek('TABLE_NAME',i,'Tabelas');
  
  $(TabelaAtual): SQL select * from $(BD).$(TabelaAtual);
  
  STORE $(TabelaAtual) INTO $(TabelaAtual).qvd;
    
  TRACE Criado QVD para a tabela $(TabelaAtual).;
  
  DROP TABLE $(TabelaAtual);
  
next i

TRACE Script concluído.;

View solution in original post

7 Replies
Not applicable

Como contribuição, segue um pequeno script que usei para extrair todas as tabelas de um determinado banco de dados MySQL (via ODBC), e gerar um QVD para cada tabela, sem qualquer transformação de dados. Está bastante comentado porque foi usado para fins didáticos, e penso que pode interessar ao grupo.

ODBC CONNECT TO MySQL;

set BD = 'nomedobanco';
TRACE Banco de dados '$(BD)' selecionado.;

TRACE Buscando e carregando tabelas do banco.;

Tabelas:
SQL select TABLE_NAME from information_schema.tables where table_schema = '$(BD)';

set TabelaAtual = 'NULO';

let Registros = NoOfRows('Tabelas');

TRACE Encontrada(s) $(Registros) tabela(s) no banco de dados $(BD).;

for i = 0 to $(Registros)-1
  LET TabelaAtual = peek('TABLE_NAME',i,'Tabelas');
  
  $(TabelaAtual): SQL select * from $(BD).$(TabelaAtual);
  
  STORE $(TabelaAtual) INTO $(TabelaAtual).qvd;
    
  TRACE Criado QVD para a tabela $(TabelaAtual).;
  
  DROP TABLE $(TabelaAtual);
  
next i

TRACE Script concluído.;

View solution in original post

pablolabbe
Luminary Alumni
Luminary Alumni

Esse é o script modelo "chupa cabra". Faz o download de um banco inteiro em arquivos QVD desde que você tenha espaço em seu disco. Use-o com moderação.

Um abraço,

Pablo

Not applicable

Espaço em disco é realmente um limitador, e convém avaliar o tamanho do banco antes de executar. O que observei usando-o foi que os QVDs resultantes possuem entre 30% e 50% do tamanho das tabelas originais no banco MySQL, o que está dentro do esperado pela compressão do QVD.

aderlanrm
Partner
Partner
Author

O Pablo lembrou bem.

O que colocamos aqui não são regras, a grande parte do material é didático, ou seja, para cada caso e situação deverá ser devidamente avaliado e feito os ajustes necessários.

O script do Marco está muito bom, parabéns Marco e obrigado por compartilhar.

Abraço.

Aderlan Rodrigues
Professor, Analista e Arquiteto de Dados
? (41) 9 9917-0869 ? www.BIdeAZ.com.br ? Youtube/bideaz.ead ? Instagram/bideaz.ead

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
pablolabbe
Luminary Alumni
Luminary Alumni

A redução é maior ainda se considerar as tabelas que tem muitos indices, que também ocupam um bom espaço no banco de dados.

pablolabbe
Luminary Alumni
Luminary Alumni

A redução é maior ainda se você considerar tabelas que tem muitos índices. Eles também ocupam um grande espaço no banco de dados.

pablolabbe
Luminary Alumni
Luminary Alumni

Esta semana lembrei do script chupa-cabra e caiu como uma luva aqui no projeto. 😀