Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Prezados,
preciso importar arquivo txt com campos definidos por largura fixa. Ou seja, cada campo da tabela é definido pelo posicionamento do dado no txt, cada range significa um campo. Sendo que no txt tem duas formas distintas de registro, melhor três, e sao identificados pelos dois primeiro s caracteres do txt(posição 1 e 2, sao eles: "01" = cabeçalho; "02"=produção consolidada; "03"=produçao individualizada.
Na extração tive que separar o que é consolidado e individualizado, tendo em vista que eles estao no mesmo arquivo e não utilizam o mesmo padrão de posicionamento.
Minha missao agora é juntar tudo na mesma tabela. Sabemos que a TBL_BPAI contém todos os campos da TBL_BPAC. Fiz o Join, mas multiplicou TBL_BPAC x TBL_BPAI. Eu apenas quero juntar sem multiplicar.
Alguém pode me ajudar?
Consegui extrair e ficou assim:
- //extrair Consolidado
- TBL_BPAC:
- LOAD [@1:2] as prd_ident,
- [@3:9] as prd_cnes,
- [@10:15] as prd_cmp,
- [@16:21] as prd_cbo,
- [@22:24] as prd_flh,
- [@25:26] as prd_seq,
- [@27:36] as prd_pa,
- [@37:39] as prd_idade,
- [@40:45] as prd_qtd,
- [@46:48] as prd_org
- FROM
- [D:\PAxxxx.ABR]
- (fix, codepage is 1252, no labels, header is 1 lines)
- WHERE([@1:2] = '02');
- //extrair Individualizado
- TBL_BPAI:
- LOAD [@1:2] as prd_ident,
- [@3:9] as prd_cnes,
- [@10:15] as prd_cmp,
- [@16:30] as prd_cnsmed,
- [@31:36] as prd_cbo,
- [@37:44] as prd_dtaten,
- [@45:47] as prd_flh,
- [@48:49] as prd_seq,
- [@50:59] as prd_pa,
- [@60:74] as prd_cnspac,
- [@75:75] as prd_sexo,
- [@76:81] as prd_ibge,
- [@82:85] as prd_cid,
- [@86:88] as prd_idade,
- [@89:94] as prd_qtd,
- [@95:96] as prd_caten,
- [@97:109] as prd_naut,
- [@110:112] as prd_org,
- [@113:142] as prd_nmpac,
- [@143:150] as prd_dtnasc,
- [@151:152] as prd_raca,
- [@153:156] as prd_etnia,
- [@157:159] as prd_nac,
- [@160:162] as prd_srv,
- [@163:165] as prd_clf,
- [@166:173] as prd_equipe_Seq,
- [@174:177] as prd_equipe_Area,
- [@178:191] as prd_cnpj,
- [@192:199] as prd_cep_pcnte,
- [@200:202] as prd_lograd_pcnte,
- [@203:232] as prd_end_pcnte,
- [@233:242] as prd_compl_pcnte,
- [@243:247] as prd_num_pcnte,
- [@248:277] as prd_bairro_pcnte,
- [@278:288] as prd_ddtel_pcnte,
- [@289:328] as prd_email_pcnte,
- [@329:338] as prd_ine,
- [@339:340] as prd_fim
- FROM
- [D:\PAxxxxx.ABR]
- (fix, codepage is 1252, no labels, header is 1 lines)
- WHERE([@1:2] = '03');
João Filipe,
Um dos problemas é isto:
Estes dois campos são diferentes então resulta no que você comentou. Você ler prd_ident e logo em seguida dar um drop. Acho que isto já resolveria o seu problema.