Por alguna razón, tengo muchos clientes que tienen datos existentes que se almacenan en hojas de cálculo. A menudo hay cientos, sino miles de elementos en cada hoja de cálculo, y pedirle al cliente que los ingrese manualmente a través de un sitio web (o que el cielo no los importe de esa manera yo mismo) está fuera de discusión. Normalmente, estos datos no asignan simplemente la columna de la hoja de cálculo a la columna de la base de datos. Eso sería demasiado fácil. Con frecuencia, los datos deben manipularse antes de ingresar a la base de datos (los datos deben dividirse por comas, etc.) o los datos deben distribuirse en varias tablas. O ambos.¿Cómo se suelen importar los datos de una hoja de cálculo a varias columnas de la base de datos?
Estoy haciendo esta pregunta, no porque no conozca una multitud de formas de hacerlo, sino porque no me he decidido por una manera que parezca que no requiere más trabajo de lo que debería. . Hasta ahora me he tomado todos los siguientes enfoques (y probablemente más que he olvidado):
- Uso de Excel para modificar los datos, así que es un poco más fácil importar
- importar la hoja de cálculo en una tabla temporal y luego importar con SQL
- Escribir un guión e importar los datos con él (he utilizado VBScript, C# y Ruby ahora)
Hasta ahora, el uso de un script ha sido la forma en que parecía más flexible, pero todavía se siente un poco torpe. Tengo que realizar esta tarea lo suficiente que incluso he contemplado escribir un pequeño DSL, solo para acelerar las cosas.
Pero antes de hacerlo, tengo curiosidad, ¿hay una mejor manera?
La mayoría de los clientes son bastante buenos para seguir un estándar si las importaciones van a suceder con frecuencia. Los mayores problemas surgen cuando se importan datos que solo se deben importar una vez (antes del lanzamiento del sitio o cuando se agregan nuevas funciones, etc.). –
Eso parece ser uno para mí. Y esos son los momentos en que odiamos nuestros trabajos. –
He usado MSSQL's DTS para esto en el pasado y funcionó bien. Debe hacer que el paquete DTS escriba en un registro en la base de datos para que sepa cuándo tiene éxito o si falla. –