Importar txt com várias estruturas de registros no mySQL

16/07/2017

0

Olá, Pessoal!

Preciso importar um arquivo txt, onde nele tem diferentes estruturas de registros, originados de uma aplicação delphi/firebird que exportou o arquivo.
São 3 tipos de registros, são eles:

1 - Cabeçalho: identificado pelas duas primeiras colunas de valor 01
2 - Consolidado: identificado pelas duas primeiras colunas de valor 02
3 - Individualizado: identificado pelas duas primeiras colunas de valor 03

O cabeçalho pode ser ignorado.

Preciso trabalhar com todos os campos em uma mesma tabela, por isso necessito pescar cada campo do txt e organiza-los dentro da tabela do BD.

No excel, consegui separar e colocar tudo em uma mesma matriz. Joguei todos os registros dentro de uma única coluna e fui preenchendo os campos da planilha separando com formulas como essa "=SE(A5="";"";EXT.TEXTO(Producao!A2;'Layout BPAI'!D$2;'Layout BPAI'!C$2))".

Conteúdo do txt

01201707CLINICA JULIO VARGAS
02996620170720711100015
039966201707000233333151FULANO DE TAL                  22710222



Serão importados apenas os dados do consolidado e individualizado

Layout da interface texto CONSOLIDADO( identificado pelas duas primeiras colunas de valor 02)

Nome | Tam | Inicio | Fim

id_registro 2 1 2
id_unidade 4 3 6
competencia 6 7 12
procedimento 6 13 18
qtd 5 19 23

Layout da interface texto INDIVIDUALIZADO(identificado pelas duas primeiras colunas de valor 03)

Nome | Tam | Inicio | Fim

id_registro 2 1 2
id_unidade 4 3 6
competencia 6 7 12
mat_profissional 6 13 18
procedimento 6 19 24
nm_usu 30 25 55
cep_usu 8 56 63


Obrigado pela atenção!
Filipe Silva

Filipe Silva

Responder

Post mais votado

17/07/2017

Ola Filipe,

Existe sim é a função substr.

Se start não for negativo, a string retornada iniciará na posição start em string, começando em zero. Por exemplo, na string 'abcdef', o caractere na posição 0 é 'a', o caractere na posição 2 é 'c', e assim em diante.

string substr ( string $string , int $start [, int $length ] )



<?php
$rest = substr("abcdef", 0, -1);  // retorna "abcde"
$rest = substr("abcdef", 2, -1);  // retorna "cde"
$rest = substr("abcdef", 4, -4);  // retorna ""
$rest = substr("abcdef", -3, -1); // retorna "de"
?>


Tem um artigo também segue link abaixo:

[url:descricao=PHP: Função substr]https://www.devmedia.com.br/php-funcao-substr/15207[/url]

Espero ter lhe ajudado.

Fabio Rocha

Fabio Rocha
Responder

Mais Posts

16/07/2017

Filipe Silva

Pessoal,

só falta eu conseguir selecionar o intervalo do texto dentro de cada linha. No excel eu utilizo a função EXT.TEXTO(texto, núm_inicial,núm_caract). Existe alguma função semelhante no PHP?
Responder

18/07/2017

Filipe Silva

Ola Filipe,

Existe sim é a função substr.

Se start não for negativo, a string retornada iniciará na posição start em string, começando em zero. Por exemplo, na string 'abcdef', o caractere na posição 0 é 'a', o caractere na posição 2 é 'c', e assim em diante.

string substr ( string $string , int $start [, int $length ] )



<?php
$rest = substr("abcdef", 0, -1);  // retorna "abcde"
$rest = substr("abcdef", 2, -1);  // retorna "cde"
$rest = substr("abcdef", 4, -4);  // retorna ""
$rest = substr("abcdef", -3, -1); // retorna "de"
?>


Tem um artigo também segue link abaixo:

[url:descricao=PHP: Função substr]https://www.devmedia.com.br/php-funcao-substr/15207[/url]

Espero ter lhe ajudado.


Perfeito!

Muito obrigado!
Responder

19/07/2017

Fabio Rocha

Filipe,


O que precisar posta ae :D

Grande abraço
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar