Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
aderlanrm
Partner - Specialist
Partner - Specialist

Exportar para TXT (Sem Rótulos - No Labels)

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\');

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Labels (7)
8 Replies
nicolett_yuri

Muito bom Aderlan, parabéns!

Not applicable

Muito bom, parabéns!!

Anonymous
Not applicable

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...

mario_sergio_ti
Partner - Specialist
Partner - Specialist

Muito bom! ótimo para a base de conhecimento da comunidade.

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
yurigodoz
Contributor II
Contributor II

Você conseguiu remover as aspas? Estou enfrentando o mesmo problema 😕

Anonymous
Not applicable

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.

yurigodoz
Contributor II
Contributor II

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!!

Anonymous
Not applicable

Fico muito feliz em saber Yuri!

Felicidades!!!