Skip to main content
Announcements
YOUR OPINION MATTERS! Please take the Qlik Experience survey you received via email. Survey ends June 14.
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!!!