Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Olá pessoal,
Vi algumas dúvidas intrigantes, fazer um store para arquivo texto sem os rótulos (no labels) e sem separador.
Após algumas pesquisas e testes, resolvi juntar as ideias encontradas e criei o arquivo anexo.
Link onde encontrei a ideia principal: Store do not write the header "no labels"
Link da dúvida: Store .txt sem labels
Para quem usa Personal Edition, segue script:
///$tab SUB
SUB ExportaParaTXT(vTable,vPath)
/*************************************/
// Desenvolvido por Aderlan Rodrigues
// Curitiba, 15 de junho de 2016
/*************************************/
IF '$(vPath)' <> '' and Right('$(vPath)',1) <> '\' then // se não tiver a barra no final do caminho será incluída
SET vPath = '$(vPath)\';
ENDIF
LET vLabel =;
LET vDados = 'LABEL AS ['; // Recebe a primeira linha de dados que será substituido no store
FOR i = 1 to NoOfFields('$(vTable)') // Junta os campos em um só para exportação sem separador
IF $(i) < NoOfFields('$(vTable)') then
LET vLabel = '$(vLabel)'&FieldName($(i),'$(vTable)')&'&';
LET vDados = '$(vDados)'&Peek(FieldName($(i),'$(vTable)'),0,'$(vTable)');
ELSE
LET vLabel = '$(vLabel)'&FieldName($(i),'$(vTable)')&' AS LABEL';
LET vDados = '$(vDados)'&Peek(FieldName($(i),'$(vTable)'),0,'$(vTable)')&']';
ENDIF
NEXT i
// Carrega sem a primeira linha
Gravar:
LOAD $(vLabel) Resident $(vTable) Where RecNo() > 1;
IF NoOfRows('Gravar') > 0 then
STORE $(vDados) from Gravar into [$(vPath)$(vTable).txt] (txt, delimiter is ' ');
ELSE
TRACE ## AVISO: Nenhuma linha carregada, o arquivo texto não foi gravado;
ENDIF
DROP Table Gravar;
// Limpa variáveis
LET i =;
LET vLabel =;
LET vDados =;
END Sub
///$tab Exemplo de Uso
ASCII:
LOAD RowNo() as ID,
Chr(RecNo()) as AsciiAlpha,
RecNo() as AsciiNum,
Rand()*Pi() as ComVirgula,
Replace(Rand()*Pi(),',','.') as ComPonto
AutoGenerate 255
Where (RecNo()>=48 and RecNo()<=126) or RecNo()>=160;
// Usando caminho relativo para gravar o arquivo
CALL ExportaParaTXT('ASCII');
// Usando caminho específico para gravar o arquivo
CALL ExportaParaTXT('ASCII','C:\TEMP\');
Muito bom Aderlan, parabéns!
Muito bom, parabéns!!
Parabéns Aderlan. Ficou ótimo.
Pena que o Qlikview insiste me colocar os nomes entre aspas. Isso dificulta minha vida porque uso uma consulta SQL para gerar os nome dos arquivos que preciso mover e o destino correto.
Vou tentar corrigir pelo comando de lote.
Felicidades...
Muito bom! ótimo para a base de conhecimento da comunidade.
Você conseguiu remover as aspas? Estou enfrentando o mesmo problema 😕
Infelizmente não Yuri.
Percebi que é uma configuração do comando STORE. Independente do que fizermos ele sempre vai adicionar as aspas duplas.
Estou rodando a consulta no SQL Developer, copiando e colando dentro do arquivo de texto.
Mas funciona, também, se deixarmos a tabela com os dados dentro do qvw e copiarmos os dados dela e colarmos no arquivo de texto. Infelizmente direto para o arquivo não consigo.
Obrigado pela resposta Wellington!
Consegui resolver indicando no script um separador que não existia no texto!
Exemplo: STORE tabela into C:\tabela.sql (txt, delimiter is 'abc123');
Valeu!!
Fico muito feliz em saber Yuri!
Felicidades!!!