Excel & SQL [Import]

FoxWinterMan

Buenos días,

Estoy haciendo un trabajo para la universidad y la verdad que no tengo mucha idea de cómo hacerlo correctamente. Explico:

Se me han dado cerca de unos 60 archivos Excel sobre información de insectos, los 60 archivos tienen el mismo formato:

Region--Point name--City Surveillance Name--Latin Name--Date--Appearances;

Lo que me piden es llevar todos estos datos a SQL Server, se me ha comentado que lo mejor sería crear una gran tabla de todos los archivos excel ya que aplicaré algoritmos de machine learning, ya que en SQL Server se me ha proporcionado 3 bases de datos acerca de medidas del micro-clima de unas 30 zonas.
Además tengo que cruzar los datos, porque en las bases de datos tengo las coordenadas de los dispositivos que recolectan los datos, y tengo que cruzar las coordenadas de los Point name de los archivos Excel para que estén lo más próximos a cada dispositivo de recogida de datos climáticos.

Preguntas:

¿Cómo manejo todo el tema de Excel? Nunca he hecho nada así y no sé como actuar, estaba pensando en juntar todos los archivos Excel en sólo uno, crear una tabla en SQL en una nueva base de datos e intentar llevarlo ahí. No sé ni cómo migrar los datos de Excel a SQL Server, he buscado información y he encontrado una manera tal que así:

INSERT INTO Libro (Id_libro,nombre_libro,cantidad_ejemplares)
SELECT a.Id_libro,a.nombre_libro,a.cantidad_ejemplares
FROM
OPENROWSET ('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\ExcelImport.xls','SELECT * FROM [Libro$]')AS a;

Pero no me ha funcionado para 1 archivo...
Por otro lado, como cruzar el tema de las coordenadas? He recogido latitud y longitud pero no sé si he de crear algunas tablas auxiliares o cómo hacerlo.

PD: No pido que nadie me lo resuelva, pero si alguna ruta a seguir, porque ando muy perdido y no sé ni por donde empezar.
Saludos y gracias

HeXaN

Haces un script en Python y en un segundo los tienes metidos en SQL.

1 2 respuestas
Fyn4r

Lo de #2, no creo que tengas mucho problema en abrir un fichero excel tratándolo como csv (la verdad es que tengo -1 idea de excel xD).
Creas la tabla, lees los ficheros fila por fila, procesas lo que haga falta (temas de símbolos raros o datos faltantes) y venga inserts a la tabla en cuestión.

FoxWinterMan

#2 Nunca he usado Python, me podrías linkear algun ejemplo o algo? (Ya ando buscando cosas sobre esto)
Tengo instalado Anaconda ahora mismo porque más tarde usaré algoritmos para ver posibles conexiones entre los datos y intentar hacer predicciones.

Muchas gracias

1 respuesta
HeXaN

#4 Con Pandas lo puedes hacer.

Troyer

PHP + https://github.com/parsecsv/parsecsv-for-php.

  1. Lees el/los CSV con los datos.
  2. Validas los datos, aplicas los algoritmos que quieras e insertas en las DBs como te de la gana.
MisKo

Y SQL Server no te permite importar los datos desde un CSV?

Guardas el excel como CSV separado por comas y lo importas. http://stackoverflow.com/questions/15242757/import-csv-file-into-sql-server

EDIT:
Veo que lo has cargado sin problema con el Excel, pero que te ha fallado 1 archivo ( de 60 ), así que mira ese archivo, intenta que tenga el mismo formato que los demás y vuelvelo a importar :)

richmonde

Que mensaje de error te ha dado con el archivo que ha fallado?

Todos los archivos son idénticos? Tienes en cuenta que en todos los campos haya datos, o tienes valores null en algun excel / todas las columnas de la tabla que has creado?

FoxWinterMan

Esto es más o menos lo que tengo (no pregunteis porque esta en Serbio).
La cosa es que por cada insecto tengo 3 archivos Excel (2014-2015-2016), tengo un total de 20 insectos de ahí los 60 archivos, y no son homogéneos en tamaño si no que cada uno tiene un determinado número de filas.
El tío de aquí me ha dicho que de todo esto haga una gran tabla en SQL Server para comenzar a trabajar en esto.
Hablando un poco desde el desconocimiento, ¿no necesitaría generar algún tipo de PK?
Por otro lado, me ha comentado que haga una tabla con las regiones dónde se recoge la información para poder cruzarla con las coordenadas de los dispositivos del microclima.

PD: muchas gracias por todas las respuestas, voy a probar a fuego todo.

Troyer

Deberías de plantearte primero la estructura de la DB final, es decir, cuantas tablas vas a necesitar, las relaciones entre ellas y sus columnas.

1 respuesta
richmonde

En ese fichero que has puesto, plantearte una PK no tiene sentido, ya que cada fila ya de por sí es única, y cuando cruces esa información con la región (supongo que es la que dices del microclima), entiendo que esa tabla también estará por fechas, con lo que no será necesaria la PK. Que sean o no homogéneos da igual, siempre que los ficheros tengan la misma estructura (Campos, y valores de cada campo)

Una cosa que no se si estás haciendo, seria en la tabla donde cargas todos los ficheros, tener una columna que identifique de que fichero sale cada dato. Es práctico si por lo que sea alguna cosa no te encaja o falla, sabes donde está, o que fichero no está cargado, o lo que sea.

Entiendo que la información que estas cargando (basándome en el ejemplo) ya viene agregada por ciudad, localización, tipo de insecto, y fecha.

Como te dice #10, antes de cargar ningún dato o pensar en como vas a cruzar los datos, primero plantéate la estructura que tendrás, luego como lo cruzarás

PaCoX

Llamame loco pero pork no usas el sql manager para importar los excel y luego ya retocas las tablas like a boss??
No hay k liarse a hacer scripts ni na xD

Usuarios habituales

  • PaCoX
  • richmonde
  • Troyer
  • FoxWinterMan
  • MisKo
  • HeXaN
  • Fyn4r