2010-03-09 22 views
6

Estamos teniendo un número significativo de problemas al crear una función de carga masiva para nuestra pequeña aplicación. Estamos utilizando la gema FasterCSV para cargar datos en una base de datos MySQL, pero Faster CSV es tan agitado y preciso en sus requisitos que constantemente se rompe con errores CSV mal formados y errores de tiempo de espera.¿Cómo preprocesar datos CSV para FasterCSV?

Los archivos csv generalmente se crean cuando los usuarios pegan texto de sus sitios web o de documentos de Microsoft Word, por lo que no es razonable esperar que nunca haya caracteres extraños como comillas o acentos inteligentes en los datos. Además, los usuarios no podrán identificar fácilmente si sus datos son lo suficientemente perfectos para FasterCSV o no. Necesitamos encontrar una manera de arreglarlo automáticamente.

¿Existe una buena manera o una herramienta confiable para preprocesar datos CSV para corregir cualquier nits en los datos antes de que la gema FasterCSV la procese?

+0

Realmente depende. ¿Qué tipo de errores te encuentras? –

+0

Sobre todo citas inteligentes de Word y caracteres de acento ocasionales o caracteres especiales de Word o HTML. A veces una bala perdida. Solo las cosas normales que obtienes cuando pegas varios párrafos de texto en una celda de Excel. –

Respuesta

1

Puede pasar el tipo de codificación del archivo en las opciones de FasterCSV al crear una nueva instancia del analizador FasterCsv. (Consulte los documentos aquí: http://fastercsv.rubyforge.org/classes/FasterCSV.html#M000018)

Al establecerlo en utf-8 o la codificación de Microsoft debe superar la mayoría de los caracteres adicionales poco fiables, lo que le permite analizar realmente las cadenas necesarias ... luego puede limpiar las cadenas de su contenido del corazón.

También hay algo en los documentos acerca de los "convertidores" que puede pasar: aunque esto apunta más a convertir, por ejemplo, tipos numéricos o de fecha, podría usarlo para gsub para los caracteres dudosos.

+0

¡Muchas gracias! Lo intentaremos –

Cuestiones relacionadas