[RESOLVIDO] Opinião sobre melhor abordagem com o cliente: Importação de csv do EXCEL

Boa tarde!

Minha dúvida não é técnica e sim “comportamental”. É sobre o que vocês fariam se tivesse que lidar com a questão que estou lidando…
Como nunca fiz isso, não sei a alternativa mais coerente.

O problema:
Preciso criar uma importação de um arquivo csv em um site. Até aí tudo bem. Já sei mais ou menos o caminho a trilhar para conseguir isso: upload do arquivo e extração dos dados através da leitura do arquivo.

As tabelas do site são normalizadas, ou seja, os valores que se repetem muito foram quebrados para várias tabelas, com chave->valor.
E as planilhas de onde o cliente vai converter em csv, não estão normalizadas.

Exemplo:
O cliente têm uma coluna para a cidade e uma coluna para o estado na planilha excel, e estão com valores texto:
LOCAL DE ENTREGA;U.F.;VALOR_CUSTO
MANAUS;AM;3,21
BELÉM;PA;3,21
SÃO LUIS;MA;3,21

E a tabela do sistema é normalizada:
TABLE CUSTO
ID INT PK,
Codlocal_LOCALENTREGA INT FK,
… (OUTRAS COLUNAS)

TABLE LOCALENTREGA
Cod_local INT PK,
cidade_local VARCHAR(20),
uf_local CHAR(2)

Ou seja, o ideal é que o cliente me fornecesse o csv com o código do local de entrega, ao invés dos valores de texto de cidade e local.

A DÚVIDA:
O QUE VOCÊS FARIAM? PASSARIAM OS CÓDIGOS PARA O CLIENTE FORNECER O CSV NO FORMATO IDEAL (PEDINDO PARA ELES FAZEREM PROCV NA PLANILHA)?
OU ACEITARIAM O FORMATO EM CSV E FARIAM A INTERPRETAÇÃO DOS VALORES NO CÓDIGO DE LEITURA DO CSV?

O que é mais usual fazer e que não aborreça o cliente também? No caso, o cliente lida com muitas planilhas e não é um grande empecilho fazer o procv… mas é um trampo a mais né? :slight_smile:

acho q vc deva interpretar o arquivo do jeito que está, porque vc esta cobrando para isso.

alem do mais, ler arquivo csv com java eh simples demais! adoro fazer esse tipo de trabalho.

[]´s

diego seu cliente que vc seja solucao pra ele. imagine que vc contrata um servico e ainda recebe um adicional que nao esperava, nao é bom ?

claro que se o adicional estiver fora do escopo e for gerar um prejuizo pra vc isso deve ser negociado.

porem, no seu caso, eh mto simples de resolver, eh soh pegar o valor e fazer uma consulta no banco para gravar o valor certo, da pra desenvolver uma ‘normalizacao’ em questao de minutos.

em um proximo contato, explique para o cliente a forma que trabalha (com seus codigos dos locais) e nao com os nomes, mas que ira fazer a “normalizacao” etc etc… assim vc fica com creditos para gastar numa proxima ocasiao

abrassss

A questão não é a dificuldade técnica.

Eu estou preocupado é com a consistência dos dados e também com desempenho.
Se o cara coloca um texto um pouco diferente na coluna, ou erra na hora de digitar o texto na planilha, daí já vai dar problema… não vou conseguir localizar a chave no sistema. E vou ter que mostrar um Exception.
Se o cara importa muitas planilhas com muitas linhas, vou ter problemas com desempenho e também ele terá um incômodo para achar os erros, não é?

Costuma dar muitos problemas de consistência com essa abordagem? Ou seja, do cara importar dados com erros no texto, duplicados, etc?

Ok entendi.
Bom, se vocês estão dizendo isso, entao já entendi que rumo devo seguir.

Estava querendo saber o que é mais usual de ser feito, sem espantar o cliente com isso… e também conseguir otimizar o sistema.

:slight_smile:

eh possivel que tenha alguns problemas sim, mas como qm preenche a planilha eh o cliente, pode ser q ele digite um numero errado ou coisa do tipo tb…

trate os casos, por ex:

belém e belem, exiba no final da importação um warning perguntando se os dados nao seriam o mesmo.

mas no fim vc achar q eh mto trabalho e se nao for problema nenhum pro cliente “normalizar” a planilha

abrasss

Na verdade são poucas colunas que devem ser normalizadas.
Mas acho que vou incluir esses Warnings mesmo, validando os dados de entrada e informando os erros, caso não encontre os textos nas tabelas correspondentes.

Daí vira problema do cara, corrigir a planilha.

Valeu, obrigado!

Sugiro que combine algumas coisas com seu cliente antes:

  • Se tiver inconsistências no arquivo, os dados inconsistentes serão ignorados ou todo o arquivo?

  • Se mandarem códigos (ufs,cidades,etc) que não existem, deve ignorar os dados ou incluir automaticamente?

  • Dados repetidos devem ser atualizados ou ignorados?

  • O processamento será interrompido na primeira linha de erro ou no final o sistema gera um relatório com todos problemas?

  • Quem será o responsável por correr atrás da planilha corrigida em caso de erros.

Esses pequenos detalhes quando esquecidos podem gerar enormes dores de cabeça.
E com a aplicação em produção, vai ficar aquele jogo de empurra de responsabilidade:
Você afirma que a planilha tá errada.
O cliente afirma que o sistema não é robusto o bastante.

Quanto mais decisões você colocar automaticamente no sistema para tratar decisões, melhor. Menos chamados para você.
Lembre-se que no dia a dia, a pessoa que operar o sistema pode não ter muita idéia do que acontece.
E as dúvidas sempre acabarão chegando até você.