Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho um código em VBA e quero um equivalente no SQL. No VBA executo um open de alto nível em um arquivo TXT e seleciono parte de uma linha com registro do TIPO 0140 e capturo apenas o CNPJ daquela FILIAL, imprimindo posteriormente no arquivo #2 os registros TIPO 0200 (PRODUTOS) com o CNPJ da respectiva FILIAL... simples!
'*** leitura do #1 (efd contr)
Do While Not EOF(1)
Line Input #1, Linha
If Mid(Linha, 2, 4) = "0140" Then
Nivel1 = Mid(Linha, InStr(1, Replace(Linha, "|", "$", 1, 3), "|"), 15)
ElseIf Mid(Linha, 2, 4) = "0200" Then
'grava #2 produtos
Print #2, Nivel1 & Replace(Mid(Linha, 1, Len(Linha) - 1), ",", ".")
End If
Loop
Gostaria de trabalhar da mesma forma no SQL em nível de arquivos e leitura linha-a-linha, mas acho que não seja possível. Pelo menos já consegui jogar todo o arquivo TXT para uma tabela no SQL num Banco de Dados TESTE, tabela TEMPOR de apenas UMA COLUNA: LINHA (que é a linha do arquivo #1 TXT lido, óbvio!).
Com um exemplo, fica mais fácil! Abaixo um arquivo ORIGINAL e o RESULTADO desejado:
Arquivo ORIGINAL
...
|0140|11111111111111|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...
|0200|cod01|desc01|...
|0200|cod02|desc02|...
|0200|cod03|desc03|...
|0200|cod04|desc04|...
|0140|22222222222222|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...
|0200|cod01|desc01|...
|0200|cod02|desc02|...
|0200|cod03|desc03|...
|0200|cod04|desc04|...
|0140|33333333333333|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...
|0200|cod01|desc01|...
|0200|cod02|desc02|...
|0200|cod03|desc03|...
|0200|cod04|desc04|...
...
RESULTADO DO SELECT ou ARQUIVO SAIDA
...
|11111111111111|0200|cod01|desc01|...
|11111111111111|0200|cod02|desc02|...
|11111111111111|0200|cod03|desc03|...
|11111111111111|0200|cod04|desc04|...
|22222222222222|0200|cod01|desc01|...
|22222222222222|0200|cod02|desc02|...
|22222222222222|0200|cod03|desc03|...
|22222222222222|0200|cod04|desc04|...
|33333333333333|0200|cod01|desc01|...
|33333333333333|0200|cod02|desc02|...
|33333333333333|0200|cod03|desc03|...
|33333333333333|0200|cod04|desc04|...
...
Carregando comentários...