Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal
Acho que alguem deve ter passado por isso.
Tenho um QVD com varios meses .. porem precisei add uma nova coluna no extract, dai da erro ao gerar pois informa que a coluna não existe, claro criei ontem (CHAVE do load incremental)
Hoje ao tentar gerar o extract valendo da esse erro, tem alguma forma de eu incluir no QVD essa coluna???
Mario,
Se a nova coluna para os arquivos antigos não for necessário preencher, basta fazer um loop lendo os QVD e incluir a coluna com null().
FOR Each ArquivoQVD in filelist ('*.qvd')
Tabela:
LOAD
*,
null() as NovoCampo
FROM $(ArquivoQVD) (qvd);
Store Tabela into '$(ArquivoQVD)' (qvd);
DROP Table Tabela;
NEXT ArquivoQVD
Mas se precisar popular esta coluna com a nova informação.....então o ideal seria ler o novo campo com somente a chave necessária e incluir na leitura do QVD......
exemplo
FOR Each ArquivoQVD in filelist ('*.qvd')
Tabela:
LOAD
*
FROM $(ArquivoQVD) (qvd);
left join (Tabela)
LOAD
CampoChave1,
CampoChave2,
CampoChave3,
CampoNOVO;
SELECT C1,C2,C3,CN FROM BANCOSQL....
Store Tabela into '$(ArquivoQVD)' (qvd);
DROP Table Tabela;
NEXT ArquivoQVD;
Lembrar que se for ler todos os campos do banco de dados necessarios no QVD fica pesado e lento, portanto coloquei como necessário os campos chaves para "ligar" no left join e mais o campo novo.
Mario,
Se a nova coluna para os arquivos antigos não for necessário preencher, basta fazer um loop lendo os QVD e incluir a coluna com null().
FOR Each ArquivoQVD in filelist ('*.qvd')
Tabela:
LOAD
*,
null() as NovoCampo
FROM $(ArquivoQVD) (qvd);
Store Tabela into '$(ArquivoQVD)' (qvd);
DROP Table Tabela;
NEXT ArquivoQVD
Mas se precisar popular esta coluna com a nova informação.....então o ideal seria ler o novo campo com somente a chave necessária e incluir na leitura do QVD......
exemplo
FOR Each ArquivoQVD in filelist ('*.qvd')
Tabela:
LOAD
*
FROM $(ArquivoQVD) (qvd);
left join (Tabela)
LOAD
CampoChave1,
CampoChave2,
CampoChave3,
CampoNOVO;
SELECT C1,C2,C3,CN FROM BANCOSQL....
Store Tabela into '$(ArquivoQVD)' (qvd);
DROP Table Tabela;
NEXT ArquivoQVD;
Lembrar que se for ler todos os campos do banco de dados necessarios no QVD fica pesado e lento, portanto coloquei como necessário os campos chaves para "ligar" no left join e mais o campo novo.
Faz o seguinte,
1-Carregue seu qvd em uma tabela, por exemplo:
[TabelaTeste]:
LOAD
*
FROM [...SeuQVD.qvd](qvd);
2-Crie um INLINE com esta nova coluna:
[InlineTemp]:
LOAD * INLINE
[NovaColuna
''
];
3-Junta o INLINE com a Tabela do QVD:
CONCATENATE([TabelaTeste])
LOAD
[NovaColuna]
RESIDENT [InlineTemp];
4-Depois é só gravar tudo no qvd e apagar a tabela
STORE [Tabela Teste] INTO [...SeuQVD.qvd](qvd);
DROP TABLE [TabelaTeste];
Deu certo .. obg
Obrigado Paulo, vou testar este modo também ... Obg