[AJUDA] Projeto alimentar banco de dados.

1. [AJUDA] Projeto alimentar banco de dados.

Filipe de Jesus Lobato
FJLobato

(usa CentOS)

Enviado em 14/03/2016 - 02:04h

Boa noite galera,

Galera, sou novo na programação, estou tendo dificuldades pra fazer uma tarefa. Gostaria da ajuda de vocês para uma tarefa que meu supervisor me concebeu que é a seguinte: me deu uns arquivos .txt que tem formato de largura fixa. Ele quer uma aplicação que transforme em delimitado e que seja importado para o banco de dados para que futuramente crie a aplicação web para pesquisar.

Ele falou que eu devia usar postgresql, visual studio, VBNET, C#(me sugeriu vários q ñ lembro aq). Já pesquisei, importei alguns pequenos .txt de formato largura fixa (apenas com tab) manualmente mas para o do projeto é difícil pois ele foge da normalidade as vezes como a seguir:


07:35:01.239 ACQAGDG0227FT AÇGDG-2 27 Falta Tensão Alarme
07:35:01.256 ACQAGDG0227FT AÇGDG-2 27 Falta Tensão Normal
07:35:13.755 ACGMG0143AM AÇGDG-1 Ch Auto/Manual GDG-1 Automático
09:00:00 ........................................... Arquivo verificado as 09:00:00 ...................................................
10:00:00 ........................................... Arquivo verificado as 10:00:00 ...................................................
11:00:00 ........................................... Arquivo verificado as 11:00:00 ...................................................
10:20:05.483 ACUPD57CXGPS AÇUPD-5-7CX Falha Sincronização Tempo Alarme
10:20:05.382 ACUPD27CYGPS AÇUPD-2-7CY Falha Sincronização Tempo Alarme


Horário / IdAlarme / Nome do equipamento / Descrição / Tipo

Dificuldade 1: saber como delimitar tantos caracteres para cada coluna. No caso aí a primeira coluna é o horário (8 dígitos). Depois eu queria que pulasse já para o ID, e saltasse os espaços brancos sem armazená-los.

Dificuldade 2: reparem que há "Arquivo verificado..." essa parte foge do padrão. Qdo fui tentar importar manualmente, deu erro bem aí. Queria uma forma de ignorar qdo houvesse esse tal de arquivo verificado.

Já busquei informações, mas estou totalmente perdido nessa atividade e ele me disse um prazo para que eu escolhesse, eu falei 1 semana e acho que fui infeliz em dizer uma semana :/. A quem me ajudar, ficarei muito grato.





  


2. Re: [AJUDA] Projeto alimentar banco de dados.

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 14/03/2016 - 07:56h

Você pode ignorar com egrep -v, fazer um trim com sed, ficando algo como:



_trim() { echo "$1" | sed 's/^ *//g' | sed 's/ *$//g'; };

cat arquivo.txt | egrep -v '.*Arquivo verificado.*' | while read LINHA; do
HORARIO=${LINHA:0:12};
ID=${LINHA:13:26};
NOME=${LINHA:39:12};
DESCRICAO=${LINHA:51:32};
TIPO=${LINHA:83};
echo "$(_trim $HORARIO);$(_trim $ID);$(_trim $NOME);$(_trim $DESCRICAO);$(_trim $TIPO)";
done;




3. Re: [AJUDA] Projeto alimentar banco de dados.

Filipe de Jesus Lobato
FJLobato

(usa CentOS)

Enviado em 14/03/2016 - 16:54h

rai3mb escreveu:

Você pode ignorar com egrep -v, fazer um trim com sed, ficando algo como:



_trim() { echo "$1" | sed 's/^ *//g' | sed 's/ *$//g'; };

cat arquivo.txt | egrep -v '.*Arquivo verificado.*' | while read LINHA; do
HORARIO=${LINHA:0:12};
ID=${LINHA:13:26};
NOME=${LINHA:39:12};
DESCRICAO=${LINHA:51:32};
TIPO=${LINHA:83};
echo "$(_trim $HORARIO);$(_trim $ID);$(_trim $NOME);$(_trim $DESCRICAO);$(_trim $TIPO)";
done;



Mano, obrigado! Me encontrei com o supervisor hoje e pra ele tanto faz o papo da largura fixa ou delimitado. Ele quer uma aplicação que procure no diretório conforme a data (os arquivos são nomeados por 'sigladolocal-dia-mês-ano') e abra esse arquivo conforme a data especificada para o usuário. Inclusive quer que tenha opção de variação de tempo para o usuário escolher por exemplo se for dados de 3 dias. Aí no caso teria que abrir os 3 arquivos e mostrá-los juntos. Resumindo: to ferrado rs




4. Re: [AJUDA] Projeto alimentar banco de dados.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 15/03/2016 - 14:58h

FJLobato escreveu:
Ele quer uma aplicação que procure no diretório conforme a data (os arquivos são nomeados por 'sigladolocal-dia-mês-ano') e abra esse arquivo conforme a data especificada para o usuário. Inclusive quer que tenha opção de variação de tempo para o usuário escolher por exemplo se for dados de 3 dias. Aí no caso teria que abrir os 3 arquivos e mostrá-los juntos. Resumindo: to ferrado rs

_______________________________________________________________________________________
Ta ferrado nada . . . Uma semana é muito tempo . . . RSRSRSR
Vamos lá... Senão esgota o prazo . . .
Fiz uns testes com o arquivo de exemplo que você enviou no 1º POST, e conclui o seguinte:
Se o SEPARADOR de CAMPO, tiver ao menos dois espaços, facilita muito.
Veja:
awk -F"[ ]{2,}" '$1 ~ /(.){12}/ {printf "%s:%s:%s:%s:%s\n" ,$1,$2,$3,$4,$5}' RELATORIO.txt 

Saída:

07:35:01.239:ACQAGDG0227FT:AÇGDG-2 27:Falta Tensão:Alarme
07:35:01.256:ACQAGDG0227FT:AÇGDG-2 27:Falta Tensão:Normal
07:35:13.755:ACGMG0143AM:AÇGDG-1:Ch Auto/Manual GDG-1:Automático
10:20:05.483:ACUPD57CXGPS:AÇUPD-5-7CX:Falha Sincronização Tempo:Alarme
10:20:05.382:ACUPD27CYGPS:AÇUPD-2-7CY:Falha Sincronização Tempo:Alarme


cat RELATORIO.txt
07:35:01.239    ACQAGDG0227FT             AÇGDG-2 27  Falta Tensão                 Alarme
07:35:01.256 ACQAGDG0227FT AÇGDG-2 27 Falta Tensão Normal
07:35:13.755 ACGMG0143AM AÇGDG-1 Ch Auto/Manual GDG-1 Automático
09:00:00 ........................................... Arquivo verificado as 09:00:00 ...................................................
10:00:00 ........................................... Arquivo verificado as 10:00:00 ...................................................
11:00:00 ........................................... Arquivo verificado as 11:00:00 ...................................................
10:20:05.483 ACUPD57CXGPS AÇUPD-5-7CX Falha Sincronização Tempo Alarme
10:20:05.382 ACUPD27CYGPS AÇUPD-2-7CY Falha Sincronização Tempo Alarme



Quanto a:
Uma aplicação que procure no diretório conforme a data (os arquivos são nomeados por 'sigladolocal-dia-mês-ano') . . .
Entra com:
sigladolocal
dia
mês
ano
e faz a busca.

Inclusive quer que tenha opção de variação de tempo para o usuário escolher por exemplo se for dados de 3 dias.
Entra com:
sigladolocal
Dia Inicial
Dia Final
.
.

att.:
marcelo oliver






5. Re: [AJUDA] Projeto alimentar banco de dados.

Filipe de Jesus Lobato
FJLobato

(usa CentOS)

Enviado em 06/05/2016 - 14:39h

msoliver escreveu:

FJLobato escreveu:
Ele quer uma aplicação que procure no diretório conforme a data (os arquivos são nomeados por 'sigladolocal-dia-mês-ano') e abra esse arquivo conforme a data especificada para o usuário. Inclusive quer que tenha opção de variação de tempo para o usuário escolher por exemplo se for dados de 3 dias. Aí no caso teria que abrir os 3 arquivos e mostrá-los juntos. Resumindo: to ferrado rs

_______________________________________________________________________________________
Ta ferrado nada . . . Uma semana é muito tempo . . . RSRSRSR
Vamos lá... Senão esgota o prazo . . .
Fiz uns testes com o arquivo de exemplo que você enviou no 1º POST, e conclui o seguinte:
Se o SEPARADOR de CAMPO, tiver ao menos dois espaços, facilita muito.
Veja:
awk -F"[ ]{2,}" '$1 ~ /(.){12}/ {printf "%s:%s:%s:%s:%s\n" ,$1,$2,$3,$4,$5}' RELATORIO.txt 

Saída:

07:35:01.239:ACQAGDG0227FT:AÇGDG-2 27:Falta Tensão:Alarme
07:35:01.256:ACQAGDG0227FT:AÇGDG-2 27:Falta Tensão:Normal
07:35:13.755:ACGMG0143AM:AÇGDG-1:Ch Auto/Manual GDG-1:Automático
10:20:05.483:ACUPD57CXGPS:AÇUPD-5-7CX:Falha Sincronização Tempo:Alarme
10:20:05.382:ACUPD27CYGPS:AÇUPD-2-7CY:Falha Sincronização Tempo:Alarme


cat RELATORIO.txt
07:35:01.239    ACQAGDG0227FT             AÇGDG-2 27  Falta Tensão                 Alarme
07:35:01.256 ACQAGDG0227FT AÇGDG-2 27 Falta Tensão Normal
07:35:13.755 ACGMG0143AM AÇGDG-1 Ch Auto/Manual GDG-1 Automático
09:00:00 ........................................... Arquivo verificado as 09:00:00 ...................................................
10:00:00 ........................................... Arquivo verificado as 10:00:00 ...................................................
11:00:00 ........................................... Arquivo verificado as 11:00:00 ...................................................
10:20:05.483 ACUPD57CXGPS AÇUPD-5-7CX Falha Sincronização Tempo Alarme
10:20:05.382 ACUPD27CYGPS AÇUPD-2-7CY Falha Sincronização Tempo Alarme



Quanto a:
Uma aplicação que procure no diretório conforme a data (os arquivos são nomeados por 'sigladolocal-dia-mês-ano') . . .
Entra com:
sigladolocal
dia
mês
ano
e faz a busca.

Inclusive quer que tenha opção de variação de tempo para o usuário escolher por exemplo se for dados de 3 dias.
Entra com:
sigladolocal
Dia Inicial
Dia Final
.
.

att.:
marcelo oliver





Que linguagem é essa? Tenho que usar o visual studio(c# ou Vb.Net), o supervisor quer uma aplicação desktop que faça isso. Depois quer que envie para o banco de dados postgres. Ainda não consegui solucionar esse problema.




6. Re: [AJUDA] Projeto alimentar banco de dados.

Ronaldo Ferreira de Lima
textmode

(usa Slackware)

Enviado em 06/05/2016 - 15:10h

Caso tenha interesse em aprender a resolver este tipo de problema, poderia começar por aqui: https://en.wikipedia.org/wiki/Data_wrangling.

Se os arquivos são de fato largura fixa, o primeiro passo é você determinar o offset de cada campo, o segundo é criar uma validação para cada campo/registro afim de identificar anomalias; e aí entra um terceiro passo que é decidir o que fazer com as anomalias.

A forma como resolver é totalmente dependente da situação que você tiver aí. Se o caso é coletar arquivos diariamente para carga automática num sistema e/ou banco de dados segue-se um caminho, se o caso é apenas carregar meia-dúzia (ou até milhares) de arquivos um única vez, segue-se outro caminho. Você citou várias tecnologias proprietárias e bem provável que a solução final siga este caminho.

[]'s
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------
https://perspicazsite.wordpress.com



7. Re: [AJUDA] Projeto alimentar banco de dados.

Filipe de Jesus Lobato
FJLobato

(usa CentOS)

Enviado em 07/05/2016 - 00:04h

textmode escreveu:

Caso tenha interesse em aprender a resolver este tipo de problema, poderia começar por aqui: https://en.wikipedia.org/wiki/Data_wrangling.

Se os arquivos são de fato largura fixa, o primeiro passo é você determinar o offset de cada campo, o segundo é criar uma validação para cada campo/registro afim de identificar anomalias; e aí entra um terceiro passo que é decidir o que fazer com as anomalias.

A forma como resolver é totalmente dependente da situação que você tiver aí. Se o caso é coletar arquivos diariamente para carga automática num sistema e/ou banco de dados segue-se um caminho, se o caso é apenas carregar meia-dúzia (ou até milhares) de arquivos um única vez, segue-se outro caminho. Você citou várias tecnologias proprietárias e bem provável que a solução final siga este caminho.

[]'s
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------
https://perspicazsite.wordpress.com


O site que você me mandou está em inglês. Vou pesquisar sobre o "Data wrangling". E sobre a aplicação, no momento é para pegar arquivos de um diretório default. Pegar o arquivo, processar e enviar para o banco. Receber os parâmetros dos usuários, mostrar conforme o intervalo de datas especificado, extensão do arquivo e região.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts