Tengo un archivo .csv que se exportó desde un sistema de base de datos de registros médicos electrónicos patentado. Estaba suscrito a su servicio, pero al finalizar mi suscripción, así es como puedo conservar mis datos y migrarlos a otro sistema. En pocas palabras, necesito importarlo a una base de datos u hoja de cálculo para luego poder usar la combinación de correspondencia de Word para recrear los documentos del registro médico en un formato legible e imprimirlos.
El problema es que cuando abro el archivo directamente con Excel o lo importo con Access, hay nuevas líneas de formato dentro de muchas de las entradas de los campos de datos que se malinterpretan como separadores de registros. Esto hace que Excel o Access comiencen una nueva fila en medio de la entrada, lo que por supuesto arruina las cosas. Cuando abrí el archivo con Notepad ++ y activé "Mostrar todos los caracteres", puedo ver que las nuevas líneas del separador de registros reales son símbolos CR LF, pero las nuevas líneas de formato dentro de las entradas son símbolos LF en sí mismas. De una lectura rápida, aprendí que las entradas de los campos de datos CSV que contienen una nueva línea idealmente deberían estar entre comillas dobles, pero las de mi archivo no, así que supongo que esta es la fuente del problema.
¿Cómo debo hacer para solucionar este problema? ¿Hay alguna manera con Access, Excel o cualquier programa de código abierto para que represente los LF por sí mismos como una nueva línea de formato dentro de la entrada del campo de datos? ¿Puedes convertir los LF en solitario a algún otro tipo de nueva línea para que se representen correctamente? Incluso si solo ignorara los LF que no fueron precedidos por CR, entonces quizás cuando más tarde use la combinación de correspondencia de Word para generar los documentos, los LF se representarían correctamente como nuevas líneas. Otra posibilidad que pensé que podría funcionar era hacer algún tipo de operación de búsqueda/reemplazo para reemplazar todos los LF individuales con otro carácter hasta que lo importara a la base de datos, luego reemplazar ese carácter con el tipo adecuado de nueva línea una vez que esté en la base de datos. o después de haber creado el documento mediante combinación de correspondencia. ¿O existe algún tipo de operación de búsqueda/reemplazo que podría simplemente encerrar cada entrada de campo que contenga un LF solo entre comillas dobles? Diablos, incluso si hay una manera de encerrar de forma no selectiva cada entrada de campo de datos en el archivo entre comillas dobles, aún así debería funcionar, ¿verdad? Simplemente no estoy seguro de cuál es la forma más fácil de proceder desde aquí y agradezco cualquier sugerencia.
Respuesta1
En notepad++, la expresión regular "[^\r]\n" coincidirá con LF, pero no con CRLF. Ahora reemplaza esto con lo que quieras. Esterespuestatiene información útil.
Respuesta2
Si el CSV está entrecomillado correctamente, es decir, entre comillas dobles todo lo que podría interpretarse como una delimitación de una 'celda', entoncesLibreOfficedebería hacer el trabajo. (YMMV) VerWikipediapara obtener una descripción del formato CSV.