Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

djmauroslp

Importar base TXT de acordo com layout para o banco de dados

Recommended Posts

olá, galera, bom dia!

estou iniciando na área de banco de dados, estou com uma dúvida.

queria importar os dados de uma base que está no formato txt para um banco de dados. a base é de campos de tamanho fixo como mostra o exemplo do layout.

estou enviando, abaixo, os modelos.

 

00espelho cadunico 7 municipal  05.791803201718032017
1190197506119                        9815065590municipio de santa luzia do para                                      
119019750611900058059962             01090320021512201532100000170021506559        211001003032015bairro natolandia                                                           rua                                                                         jose cirino                                                                 0000000000000770                      casa                                                                       68644000                                      prox ao comercio do bena                                                                                                                                                                                                                                        yuri lorran rocha                                                     01687294232                                                                                                                                                                                                                                                                                        27082017127082015                                                                                                              
119019750611900058059962             02110402161113111
119019750611900058059962             032                                                                                                                                                        1                                                                                                                            10601  1  1  1000100000001000140000450001400000001000001unidade saude da familia sao pedro                                    000002676095cras casas familias da terra querida                                  015065504324
119019750611900058059962             09910991172365ls000000000000nnn0@0.aa                                            0
119019750611900058059962             11             12   199                                           11000
11901975061190005805996200002742853  0429092009151220153206antonia maiara dos reis silva                                         16061307145                                  208012000031maria de nazare dos reis                                              0manoel conceicao miranda da silva                                     01pa1santa luzia do para                15065591                                          11                                                                                     0690208227069069020822706916061307145    
11901975061190005805996200002742853  051cartorio publico de                                                   26      448         13052000pasanta luzia do para                1506559                                                                                                            00012893                                            
11901975061190005805996200002742853  062              
11901975061190005805996200002742853  0711e m e f joao gomes                                                    1pasanta luzia do para                15065591554093610506     
11901975061190005805996200002742853  0822   0000012       000001000001000001000001000001
11901975061190005805996200002742854  0429092009151220154204maria valdiane dos reis                                               16061598964                                  223031990  4maria de nazare dos reis                                              0                                                                      12pa1ourem                              15054031                                          11                                                                                     0920329527092092032952709216061598964    
11901975061190005805996200002742854  051santa luzia do para                                                   9       23          15031993paourem                              1505403               02555678204                     03112010passp     00592370006321092010pa00656303213760041018300004321                        00000000000007084531
11901975061190005805996200002742854  062              
11901975061190005805996200002742854  0713                                                                                                                                04041
11901975061190005805996200002742854  08                                           000050
11901975061190005805996200002742854  19        0000000000006                                                                                                                                                                                                                                                                                  mudanca de endereco ocorrida anteriormente a versao 7                                                                                                                                                                                                          
11901975061190005805996200002742855  0429092009151220154208naiara conceicao dos reis silva                                       16659955772                                  210092004034maria de nazare dos reis                                              0manoel conceicao miranda da silva                                     02pa1capanema                           15022021                                          11                                                                                     2690521906269269052190626916659955772    
11901975061190005805996200002742855  051santa luzia                                                           32a     169v        17112004pa                                                                                                                                                      00016330                                            
11901975061190005805996200002742855  062              
11901975061190005805996200002742855  0724                                                                                                                                     
11901975061190005805996200002742855  19230720129934016028203                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
11901975061190005805996200002742856  0429092009151220154203valdemir do socorro dos reis                                          16556267474                                  115101991034maria de nazare dios reis                                             0                                                                      12pa1ourem                              15054031                                          11                                                                                     1610256302161438024863643800000000000    
11901975061190005805996200002742856  051carlos augusto magal                                                  7a      v23         15031993pa                                                         02736085256                     22122009passp     00303240006105122009pa00656316413170041018300015148                        00000000000006906623
11901975061190005805996200002742856  062              

 

modelo layout

59448b63a5143_reg99.png.ef851e96d45e9acf6e211c376a441cb5.png59448b619e996_reg00.png.abed19973c102fc2b3926702ef3b31a3.png

Claro que o banco de dados é bem maior, porém sabendo como iniciar fica mais fácil o restante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@djmauroslp, buenas.

 

Cara, a abordagem vai depender das ferramentas que tu utiliza. Pode detalhar qual arquitetura pretende usar?

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, Marlon Pacheco disse:

@djmauroslp, buenas.

 

Cara, a abordagem vai depender das ferramentas que tu utiliza. Pode detalhar qual arquitetura pretende usar?

Olá Marlon, boa tarde!

Na verdade essa é uma base de dados do Cadastro Único da CEF, e estou fazendo um sistema em C# com uma versão offline. Então gostaria de importar essa base disponibilizada em txt para um banco de dados no sql server 2014.

A minha dúvida é como fazer a leitura do arquivo txt e importar para o banco de dados levando em consideração o layout disponibilizado, visto que os campos são de tamanho fixo (posição).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 2017-6-20 at 09:17, Marlon Pacheco disse:

@djmauroslp, buenas.

 

Cara, a abordagem vai depender das ferramentas que tu utiliza. Pode detalhar qual arquitetura pretende usar?

Olá Marlon, não consegui pelo método que me enviou. você tem alguma ideia de como poderia realizar essa importação para o Access, pois se conseguir fazer, fica mais fácil de converter depois para o sql server.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O delimitador no seu caso é o intervalo de espaço.... (pos+tamanho) como descrito na sua própria foto.

 

Você tem conhecimento de alguma linguagem de programação?! Pode te ajudar...

 

 

Uma opção é Inserir tudo na base, e tratar com scripts.

 

Veja se alguma das funções te ajuda:

https://dev.mysql.com/doc/refman/5.7/en/string-functions.html

 

Ou seja:

mysql> SELECT SUBSTRING('MINHA LINHA',7, 5);

 

Vai retornar 'LINHA':

mysql> SELECT SUBSTRING('MINHA LINHA',7, 5);
+-------------------------------+
| SUBSTRING('MINHA LINHA',7, 5) |
+-------------------------------+
| LINHA                         |
+-------------------------------+

Vamos ver se alguém da um exemplo melhor, meu forte não é DB hehe

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, Geyvson Correia disse:

Gostaria do Leiaute do CADÚnico quem poder me envie por email

 

geyvson@hotmail.com

Creio ser melhor abrir um tópico sobre isto , todavia o site da Caixa não ajuda ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, Motta disse:

Creio ser melhor abrir um tópico sobre isto , todavia o site da Caixa não ajuda ?

Não tem no site da Caixa e nem por telefone eles sabem informar, mas vi alguns trechos aqui no fórum desse leiaute, quem puder disponibilizar, ficaria grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 04/09/2017 at 18:00, gabrieldarezzo disse:

O delimitador no seu caso é o intervalo de espaço.... (pos+tamanho) como descrito na sua própria foto.

 

Você tem conhecimento de alguma linguagem de programação?! Pode te ajudar...

 

 

Uma opção é Inserir tudo na base, e tratar com scripts.

 

Veja se alguma das funções te ajuda:

https://dev.mysql.com/doc/refman/5.7/en/string-functions.html

 

Ou seja:


mysql> SELECT SUBSTRING('MINHA LINHA',7, 5);

 

Vai retornar 'LINHA':


mysql> SELECT SUBSTRING('MINHA LINHA',7, 5);
+-------------------------------+
| SUBSTRING('MINHA LINHA',7, 5) |
+-------------------------------+
| LINHA                         |
+-------------------------------+

Vamos ver se alguém da um exemplo melhor, meu forte não é DB hehe

 

Muito obrigado, vou dar uma olhada no seu exemplo. Estou trabalhando com C# nesse sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Elisame Araújo
      Seguinte,
      Eu tenho uma página de atualização de lista de faixas que estão agrupados por álbum, com os dados vindo através de parâmetros na url como o albumID e detalhes e são retornados dentro de um while.
      O que eu queria é que ele atualizasse todos os campos que fossem editados se eles fossem modificados, mas o que o ocorre é que apenas o último registro é atualizado.
       
      O script que traz as faixas:
       
      <tr> <form class="form-group" method="post" action="includes/funcoes/atualizar-faixas.php"> <?php while($sqlSelect = mysqli_fetch_assoc($result)) { ?> <td><input type="text" value="<?php echo $sqlSelect['trackNumero'] ?>" class="form-control" name="trackNumero"></td> <td><input type="text" value="<?php echo $sqlSelect['trackTitulo'] ?>" class="form-control" name="trackTitulo"></td> <td><input type="text" value="<?php echo $sqlSelect['trackTraducao'] ?>" class="form-control" name="trackTraducao"></td> <td><input type="text" value="<?php echo $sqlSelect['trackID'] ?>" class="form-control" name="trackID" readonly></td> <td><input type="text" value="<?php echo $sqlSelect['albumID'] ?>" class="form-control" name="albumID" readonly></td> </tr> <?php } ?> <tr><a href="albuns-lista.php"><button name="cancelar" id="cancelar" class="btn btn-danger mb-3 mr-1" type="button"> <i class="fa-solid fa-arrow-left"></i> Voltar</button></a></tr> <tr><button name="update" id="update" class="btn btn-success mb-3" type="submit" value=""><i class="fa-solid fa-arrow-up-from-bracket"></i> Atualizar</button></tr> </form>  
       
      E esse é o resultado do código acima:

       
      E este é o código que uso pra fazer o UPDATE no banco de dados:
      <?php require_once "../db/albuns.php"; if(isset($_POST['update'])){ $trackNumero = $_POST['trackNumero']; $trackTitulo = mysqli_real_escape_string($conecta2, $_POST['trackTitulo']); $trackTraducao = $_POST['trackTraducao']; $trackID = $_POST['trackID']; $albumID = $_POST['albumID']; $sqlUpdate = "UPDATE `faixas` SET `trackTitulo` = '$trackTitulo', `trackNumero` = '$trackNumero', `trackTraducao` = '$trackTraducao' WHERE `albumID` = $albumID AND `trackID` = $trackID"; if($atualizaDados = mysqli_query($conecta2, $sqlUpdate) == true){ var_dump($sqlUpdate); //header("location: ../../albuns.php?update=sucesso"); } else { //header("location: ../../albuns.php?update=erro"); } } ?> Como eu faria para que cada linha fosse atualizada individualmente? Já tentei diversos métodos, mas o resultado continua sendo a atualização apenas do último registro no banco, ignorando o restante das atualizações.
    • Por luiz0o
      Estou fazendo um projeto para faculdade, e tenho um formulário, esse formulário precisa enviar as respostas tanto para um banco de dados, mas também tem que enviar para uma API que envia para meu email, mas não sei como fazer essas duas coisas ao mesmo tempo
    • Por michelramos
      tenho a seguinte view local no mysql:
      select orcamentos.id, orcamentos.id_empresa, 'orcamento' as tipo, orcamentos.data_aprovacao, month(orcamentos.data_aprovacao) as mes, year(orcamentos.data_aprovacao) as ano, sum(itens_orcamentos.quantidade) as quantidade, sum(itens_orcamentos.preco_unidade) as preco_unidade, sum(itens_orcamentos.desconto) as desconto, sum(itens_orcamentos.preco_unidade_desconto) as preco_unidade_desconto, orcamentos.desconto_orcamento as desconto_orcamento, sum(itens_orcamentos.preco_total) as preco_total, (orcamentos.total_outros_itens+orcamentos.outras_despesas+(select sum(preco_total) from itens_orcamentos where id_orcamento = orcamentos.id)) as total_sem_desconto, ( (orcamentos.total_outros_itens+orcamentos.outras_despesas+(select sum(preco_total) from itens_orcamentos where id_orcamento = orcamentos.id)) - (((orcamentos.total_outros_itens+orcamentos.outras_despesas+(select sum(preco_total) from orcamentos where id_orcamento = orcamentos.id))*orcamentos.desconto_orcamento)/100) ) as total_com_desconto from orcamentos inner join itens_orcamentos on orcamentos.id = itens_orcamentos.id_orcamento where orcamentos.id_situacao in (3,5,6) group by orcamentos.id union all select ordens_servico.id, ordens_servico.id_empresa, 'ordem_servico'as tipo, ordens_servico.data_aprovacao, month(ordens_servico.data_aprovacao) as mes, year(ordens_servico.data_aprovacao) as ano, sum(itens_ordem_servico.quantidade) as quantidade, sum(itens_ordem_servico.preco_unidade) as preco_unidade, sum(itens_ordem_servico.desconto) as desconto, sum(itens_ordem_servico.preco_unidade_desconto) as preco_unidade_desconto, ordens_servico.desconto as desconto_ordem_servico, sum(itens_ordem_servico.preco_total) as preco_total, ((select sum(preco_total) from itens_ordem_servico where id_ordem_servico = ordens_servico.id and tipo = 'produto')) as total_sem_desconto, ( (select sum(preco_total) from itens_ordem_servico where id_ordem_servico = ordens_servico.id and tipo = 'produto') - (((select sum(preco_total) from itens_ordem_servico where id_ordem_servico = ordens_servico.id and tipo = 'produto')*ordens_servico.desconto)/100) ) as total_com_desconto from ordens_servico inner join itens_ordem_servico on ordens_servico.id = itens_ordem_servico.id_ordem_servico where itens_ordem_servico.tipo = 'produto' and ordens_servico.id_situacao in(3,5,6) group by ordens_servico.id union all /* select nfe.id, nfe.id_empresa, 'nfe'as tipo, nfe.data_emissao, month(nfe.data_emissao) as mes, year(nfe.data_emissao) as ano, itens_nfe.descricao as nome, itens_nfe.id_item, coalesce(itens_nfe.quantidade_tributavel) as quantidade, coalesce(itens_nfe.valor_unitario_tributavel, 0) as preco_unidade, null, coalesce(itens_nfe.valor_unitario_tributavel, 0) as preco_unidade_desconto, (valor_unitario_tributavel*quantidade_tributavel) as preco_total from nfe inner join itens_nfe on nfe.id = itens_nfe.id_nfe where itens_nfe.tipo_item = 'produto' and nfe.id_situacao = 3 and nfe.incluir_no_faturamento = 's' */ select nfe.id, nfe.id_empresa, 'nfe'as tipo, nfe.data_emissao, month(nfe.data_emissao) as mes, year(nfe.data_emissao) as ano, null, (nfe.valor_total-nfe.valor_frete) as preco_unidade, null, (nfe.valor_total-nfe.valor_frete) as preco_unidade_desconto, null, (nfe.valor_total-nfe.valor_frete) as preco_total, (nfe.valor_total-nfe.valor_frete) as total_sem_desconto, (nfe.valor_total-nfe.valor_frete) as total_com_desconto from nfe where nfe.id_situacao = 3 and nfe.incluir_no_faturamento = 's' group by nfe.id union all select nfse.id, nfse.id_empresa, 'nfse'as tipo, nfse.data_emissao, month(nfse.data_emissao) as mes, year(nfse.data_emissao) as ano, null as quantidade, (nfse.valor_servicos-nfse.valor_deducoes) as preco_unidade, null, (nfse.valor_servicos-nfse.valor_deducoes) as preco_unidade_desconto, (nfse.valor_servicos-nfse.valor_deducoes) as preco_total, null, (nfse.valor_servicos-nfse.valor_deducoes) as total_sem_desconto, (nfse.valor_servicos-nfse.valor_deducoes) as total_com_desconto from nfse where nfse.id_situacao = 3 and nfse.incluir_no_faturamento = 's' group by nfse.id  
      que, quando coloco no banco online fica da seguinte forma:
      SELECT `orcamentos`.`id` AS `id`, `orcamentos`.`id_empresa` AS `id_empresa`, 'orcamento' AS `tipo`, `orcamentos`.`data_aprovacao` AS `data_aprovacao`, MONTH ( `orcamentos`.`data_aprovacao` ) AS `mes`, YEAR ( `orcamentos`.`data_aprovacao` ) AS `ano`, sum( `itens_orcamentos`.`quantidade` ) AS `quantidade`, sum( `itens_orcamentos`.`preco_unidade` ) AS `preco_unidade`, sum( `itens_orcamentos`.`desconto` ) AS `desconto`, sum( `itens_orcamentos`.`preco_unidade_desconto` ) AS `preco_unidade_desconto`, `orcamentos`.`desconto_orcamento` AS `desconto_orcamento`, sum( `itens_orcamentos`.`preco_total` ) AS `preco_total`, `orcamentos`.`total_outros_itens` + `orcamentos`.`outras_despesas` + ( SELECT sum( `itens_orcamentos`.`preco_total` ) FROM `itens_orcamentos` WHERE `itens_orcamentos`.`id_orcamento` = `orcamentos`.`id` ) AS `total_sem_desconto`, `orcamentos`.`total_outros_itens` + `orcamentos`.`outras_despesas` + ( SELECT sum( `itens_orcamentos`.`preco_total` ) FROM `itens_orcamentos` WHERE `itens_orcamentos`.`id_orcamento` = `orcamentos`.`id` ) - ( `orcamentos`.`total_outros_itens` + `orcamentos`.`outras_despesas` + ( SELECT sum( `itens_orcamentos`.`preco_total` ) FROM `orcamentos` WHERE `itens_orcamentos`.`id_orcamento` = `orcamentos`.`id` ) ) * `orcamentos`.`desconto_orcamento` / 100 AS `total_com_desconto` FROM ( `orcamentos` JOIN `itens_orcamentos` ON ( `orcamentos`.`id` = `itens_orcamentos`.`id_orcamento` ) ) WHERE `orcamentos`.`id_situacao` IN ( 3, 5, 6 ) GROUP BY `orcamentos`.`id` UNION ALL SELECT `ordens_servico`.`id` AS `id`, `ordens_servico`.`id_empresa` AS `id_empresa`, 'ordem_servico' AS `tipo`, `ordens_servico`.`data_aprovacao` AS `data_aprovacao`, MONTH ( `ordens_servico`.`data_aprovacao` ) AS `mes`, YEAR ( `ordens_servico`.`data_aprovacao` ) AS `ano`, sum( `itens_ordem_servico`.`quantidade` ) AS `quantidade`, sum( `itens_ordem_servico`.`preco_unidade` ) AS `preco_unidade`, sum( `itens_ordem_servico`.`desconto` ) AS `desconto`, sum( `itens_ordem_servico`.`preco_unidade_desconto` ) AS `preco_unidade_desconto`, `ordens_servico`.`desconto` AS `desconto_ordem_servico`, sum( `itens_ordem_servico`.`preco_total` ) AS `preco_total`, ( SELECT sum( `itens_ordem_servico`.`preco_total` ) FROM `itens_ordem_servico` WHERE `itens_ordem_servico`.`id_ordem_servico` = `ordens_servico`.`id` AND `itens_ordem_servico`.`tipo` = 'produto' ) AS `total_sem_desconto`, ( SELECT sum( `itens_ordem_servico`.`preco_total` ) FROM `itens_ordem_servico` WHERE `itens_ordem_servico`.`id_ordem_servico` = `ordens_servico`.`id` AND `itens_ordem_servico`.`tipo` = 'produto' ) - ( SELECT sum( `itens_ordem_servico`.`preco_total` ) FROM `itens_ordem_servico` WHERE `itens_ordem_servico`.`id_ordem_servico` = `ordens_servico`.`id` AND `itens_ordem_servico`.`tipo` = 'produto' ) * `ordens_servico`.`desconto` / 100 AS `total_com_desconto` FROM ( `ordens_servico` JOIN `itens_ordem_servico` ON ( `ordens_servico`.`id` = `itens_ordem_servico`.`id_ordem_servico` ) ) WHERE `itens_ordem_servico`.`tipo` = 'produto' AND `ordens_servico`.`id_situacao` IN ( 3, 5, 6 ) GROUP BY `ordens_servico`.`id` UNION ALL SELECT `nfe`.`id` AS `id`, `nfe`.`id_empresa` AS `id_empresa`, 'nfe' AS `tipo`, `nfe`.`data_emissao` AS `data_emissao`, MONTH ( `nfe`.`data_emissao` ) AS `mes`, YEAR ( `nfe`.`data_emissao` ) AS `ano`, NULL AS `NULL`, `nfe`.`valor_total` - `nfe`.`valor_frete` AS `preco_unidade`, NULL AS `NULL`, `nfe`.`valor_total` - `nfe`.`valor_frete` AS `preco_unidade_desconto`, NULL AS `NULL`, `nfe`.`valor_total` - `nfe`.`valor_frete` AS `preco_total`, `nfe`.`valor_total` - `nfe`.`valor_frete` AS `total_sem_desconto`, `nfe`.`valor_total` - `nfe`.`valor_frete` AS `total_com_desconto` FROM `nfe` WHERE `nfe`.`id_situacao` = 3 AND `nfe`.`incluir_no_faturamento` = 's' GROUP BY `nfe`.`id` UNION ALL SELECT `nfse`.`id` AS `id`, `nfse`.`id_empresa` AS `id_empresa`, 'nfse' AS `tipo`, `nfse`.`data_emissao` AS `data_emissao`, MONTH ( `nfse`.`data_emissao` ) AS `mes`, YEAR ( `nfse`.`data_emissao` ) AS `ano`, NULL AS `quantidade`, `nfse`.`valor_servicos` - `nfse`.`valor_deducoes` AS `preco_unidade`, NULL AS `NULL`, `nfse`.`valor_servicos` - `nfse`.`valor_deducoes` AS `preco_unidade_desconto`, `nfse`.`valor_servicos` - `nfse`.`valor_deducoes` AS `preco_total`, NULL AS `NULL`, `nfse`.`valor_servicos` - `nfse`.`valor_deducoes` AS `total_sem_desconto`, `nfse`.`valor_servicos` - `nfse`.`valor_deducoes` AS `total_com_desconto` FROM `nfse` WHERE `nfse`.`id_situacao` = 3 AND `nfse`.`incluir_no_faturamento` = 's' GROUP BY `nfse`.`id`  
      Não sei se a diferença tem haver com o problema, que é o seguinte:
      - ao puxar um registro x no banco local, o resultado retornado é o seguinte: 
      - id | id_empresa | tipo | data_aprovacao | mes | ano | quantidade | preco_unidade | desconto | preco_unidade_descont | desconto_orcamento | preco_total | total_sem_desconto - 181 1 orcamento 2022-10-04 00:00:00 10 2022 67,00 319,05 0,00 319,05 5,00 1350,90 1350,90 1283,355000 - ao puxar o mesmo registro no banco online, o resultado retornado é: - 181 1 orcamento 2022-10-04 00:00:00 10 2022 67,00 319,05 0,00 319,05 5,00 1350,90 1350,90 1318,649994 a ultima coluna está apresentando uma discrepência de mais ou menos 35 e não consegui encontrar nada a respeito
       
      obs: ambos os bancos são idênticos, os dados são idênticos.
    • Por Carlos Antoliv
      Senhores, bom dia.
       
      tenho um campo status. Então, a ideia é mudar o status. Consigo alterar o status quando necessário. Daí, pensei em todas vez que alterar, salvar o id do usuário, data, hora, o último status alterado...
      consigo fazer isso com INSERT, depois do UPDATE.
       
      Nao uso trigger. Até tentei fazer, mas não saiu como eu queria.
       
      Então, para os maiores entendedores do assunto, a melhor prática seria a TRIGGER ou INSERT ? Melhor prática ou o que mais funciona na prática ?
       
      Alguém poderia dissertar sobre isso ?
      Vlw..abço
    • Por Roberto S. Santos
      Boa noite devs.
      Poderiam me ajudar ?
      Estou querendo fazer o seguinte em um formulário PHP...
      O usuário deve cadastrar a sua data e horário do uso na churrasqueira e quando chegar nesta data e no horário final ele apaga os dados do cadastro desta reserva.
      Como posso fazer isto com PHP ?
      Temos...
      data reserva
      hora reserva  (hora inicial)
      hora final (já vai estar pré definida na base de dados)
      Banco de Dados : clientes
      Tabela : reserva
      Deus abençoe a todos.
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.