O que devo fazer com as novas linhas deste arquivo CSV para que ele seja importado corretamente para um banco de dados ou planilha?

O que devo fazer com as novas linhas deste arquivo CSV para que ele seja importado corretamente para um banco de dados ou planilha?

Eu tenho um arquivo .csv que foi exportado de um sistema proprietário de banco de dados de registros eletrônicos de saúde. Eu era assinante do serviço deles, mas ao encerrar minha assinatura é assim que consigo manter meus dados e migrá-los para outro sistema. Resumindo, preciso importá-lo para um banco de dados ou planilha para poder usar a mala direta do Word para recriar os documentos do prontuário médico em um formato legível e imprimi-los.

O problema é que quando abro o arquivo diretamente com o Excel ou importo-o com o Access, há novas linhas de formatação em muitas das entradas do campo de dados que estão sendo mal interpretadas como separadores de registros. Isso faz com que o Excel ou o Access iniciem uma nova linha no meio da entrada, o que obviamente estraga tudo. Quando abri o arquivo com o Notepad ++ e ativei "Mostrar todos os caracteres", posso ver que as verdadeiras novas linhas do separador de registros são símbolos CR LF, mas as novas linhas de formatação nas entradas são símbolos LF por si só. Com uma leitura rápida, aprendi que as entradas do campo de dados CSV que contêm uma nova linha deveriam idealmente ser colocadas entre aspas duplas, mas as do meu arquivo não, então presumo que essa seja a origem do problema.

Como devo proceder para consertar isso? Existe uma maneira com o Access, o Excel ou qualquer programa de código aberto de fazer com que ele renderize os LFs sozinhos como uma nova linha de formatação na entrada do campo de dados? Você pode converter os LFs solo para algum outro tipo de nova linha para que sejam renderizados corretamente? Mesmo que ele apenas ignorasse os LFs que não foram precedidos por CR, talvez quando eu usasse mais tarde a mala direta do Word para gerar os documentos, ele renderizaria os LFs corretamente como novas linhas? Outra possibilidade que pensei que poderia funcionar era fazer algum tipo de operação de localização/substituição para substituir todos os LFs solo por outro caractere até importá-lo para o banco de dados e, em seguida, substituir esse caractere pelo tipo adequado de nova linha quando estiver no banco de dados ou depois de criar o documento por meio de mala direta. Ou existe algum tipo de operação localizar/substituir que poderia simplesmente colocar cada entrada de campo contendo um LF solo entre aspas duplas? Caramba, mesmo que exista uma maneira de colocar de forma não seletiva todas as entradas de campos de dados no arquivo entre aspas duplas, isso ainda deve funcionar, certo? Só não tenho certeza da maneira mais fácil de proceder a partir daqui e agradeço qualquer sugestão.

Responder1

No notepad ++, a expressão regular "[^\r]\n" corresponderá a LF, mas não a CRLF. Agora substitua isso pelo que você quiser. Esserespondertem informações úteis.

Responder2

Se o CSV estiver entre aspas corretamente, ou seja, aspas duplas em torno de tudo que possa ser interpretado como delimitando uma 'célula', entãoLibreOfficedeveria fazer o trabalho. (YMMV) VejaWikipédiapara obter uma descrição do formato CSV.

informação relacionada