Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
O arquivo anexo tem um exemplo de como é possível fazer um extrator de Microsoft SQL Server 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 comando STORE, pode gerar arquivos texto com qualquer separador de campo.
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
Boa tarde.
Você têm erros de chave no script como mostra o finalzinho do seu script $ Syn 1.
Se as tabelas tiverem campos com o mesmo nome e for só para extrair, de um store de cada tabela. para qvd após o select e um drop table.
Dessa forma não haverá amarrações de dados.
Luciano,
Independente da chave não teria que criar os QVDs?
Na sua execução não mostra nenhuma linha do loop que lê e grava as tabelas:
Let vLinhas = NoOfRows('Tabelas'); // Define o número de objetos que serão exportados
FOR x = 0 to ($(vLinhas)-1) // O -1 é necessário pois o indice começa em zero
Let vCatalogo = Peek('TABLE_CATALOG',$(x)); // Define o nome da base de dados no objeto atual
Let vModelo = Peek('TABLE_SCHEMA',$(x)); // Define o nome do modelo no objeto atual
Let vTabela = Peek('TABLE_NAME',$(x)); // Define o nome do objeto a ser exportado
$(vTabela):
SQL SELECT * FROM $(vCatalogo)$(vModelo)$(vTabela);
STORE $(vTabela) into $(vCatalogo)$(vModelo)$(vTabela).qvd (qvd);
DROP Table $(vTabela);
NEXT;
DROP Table Tabelas;
Não sei o que foi alterado do script original, mas sugiro depurar para verificar se está entrando no loop e resolvendo corretamente as variáveis.
segue script abaixo:
//*** ATENÇÃO, DEPENDENDO DO TAMANHO DA SUA BASE DE DADOS, ISSO PODE DEMORAR ***//
// String de conexão de exemplo usando o SQL Express e banco de dados fornecido pela Microsoft, o Adventure Works 2008
OLEDB CONNECT32 TO [Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=GRUPOVB;Data Source=SAUTUMN1;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=SAUTUMN1;Use Encryption for Data=False;Tag with column collation when possible=False];
TABLES: // Carrega todos objetos tabelas ou views
SQL select TABLE_CATALOG,
TABLE_SCHEMA,
TABLE_NAME,
TABLE_TYPE
from INFORMATION_SCHEMA.TABLES;
//where TABLE_TYPE = 'BASE TABLE' or TABLE_TYPE = 'VIEW'
//order by TABLE_TYPE, TABLE_NAME;
Let vLinhas = NoOfRows('Tabelas'); // Define o número de objetos que serão exportados
FOR x = 0 to ($(vLinhas)-1) // O -1 é necessário pois o indice começa em zero
Let vCatalogo = Peek('TABLE_CATALOG',$(x)); // Define o nome da base de dados no objeto atual
Let vModelo = Peek('TABLE_SCHEMA',$(x)); // Define o nome do modelo no objeto atual
Let vTabela = Peek('TABLE_NAME',$(x)); // Define o nome do objeto a ser exportado
$(vTabela):
SQL SELECT * FROM $(vCatalogo)$(vModelo)$(vTabela);
STORE $(vTabela) into $(vCatalogo)$(vModelo)$(vTabela).qvd (qvd);
DROP Table $(vTabela);
NEXT;
Grato pela atenção.
Olá pessoal,
Desculpem a falta de resposta, a correria tem me deixado longe da comunidade.
Os QVD são gerados na mesma pasta onde você salvou o QVW.
O problema pode ser na string de conexão, é interessante refazer usando o assistente do editor de script e fazer teste. Apesar de fazer a leitura da tabela de informações do banco, o usuário pode não ter permissão de leitura ao banco que está extraindo os dados.
Acrescente o comando "USE [NOME DO BANCO]" para reforçar, se necessário.
Abraço.