Marko Radakovic

Usando paquetes SSIS para importar datos de MS Excel en una base de datos

December 18, 2015 by
Insertar datos en una tabla de una base de datos puede ser difícil y tomar mucho tiempo. Especialmente hoy cuando las bases de datos se están volviendo más y más grandes. La importación de datos automatizada es posible usando diferentes métodos, dependiendo del tipo del archivo de datos y la organización interna de los datos.

La manera más fácil de importar los dato a la base de datos SQL es usando el asistente Import Data de SQL Server Management Studio. Siguiendo los pasos a través del asistente, el usuario puede elegir el archivo fuente y la tabla destino para importar los datos. Sin embargo, importar datos de esta manera reduce el proceso y no permitirá al usuario ejecutar tareas más complejas con diferentes tipos de datos y múltiples archivos. Los paquetes SSIS ofrecen una solución para este tipo de problemas. El paquete SSIS representa una herramienta para el procesamiento ETL (Extraer, Transformar, Cargar, Extract-Transform-Load en inglés) y puede ser usado no sólo para importar los datos en la base de datos, sino para transformar, filtrar y agrupar los datos y muchas otras tareas. Este artículo le dará una explicación acerca de cómo importar una simple hoja de cálculo de Excel a la base de datos SQL.

Antes de crear un paquete SSIS, el usuario necesita crear un nuevo proyecto en BIDS eligiendo Integration Services en la lista Business Intelligence a la izquierda, navegue a Integration Services Project y defina un nombre para el proyecto como se muestra en la imagen a continuación.

Creating new project in BIDS - defining a name for the project

Importando desde una hoja de cálculo de MS Excel

Para poder importar los datos desde la hoja de cálculo Excel a la base de datos SQL, el usuario primero necesita definir el Data Flow Task, arrastrando desde SSIS Toolbox al área Control Flow como se muestra en la siguiente imagen.

Defining the Data Flow Task

Al hacer doble clic en Data Flow Task se abrirá la pestaña Data Flow. Antes de seleccionar y configurar la fuente y el destino, deben crearse conexiones para ambos. Dado que la hoja de cálculo Excel es la fuente, la Conexión Excel será creada, y para el destino, la Conexión OLE DB. Ambas conexiones pueden ser creadas haciendo clic derecho en Connection Manager en Solution Explorer, y eligiendo New Connection Manager de la lista desplegable, como se muestra en la imagen a continuación.

Choosing the New Connection Manager from the drop down list in the Solution Explorer

En la lista de conexiones en el diálogo New Connection Manager, la conexión Excel será usada para conectar la hoja de cálculo Excel externa con el proyecto. Haciendo clic en el botón Browse, el archivo Excel puede ser conectado con la tarea como se muestra en la siguiente imagen.

Nota: La hoja de cálculo Excel externa debe tener la extensión “xls”.

La conexión con el destino, en este caso la base de datos SQL Server, puede ser establecida a través de la conexión OLE DB, eligiéndola de la lista en la ventana New Connection Manager.

En la ventana Connection Manager, Native OLE DB\SQL Server Native Client 11.0 debe ser seleccionado de la lista desplegable Provider. En el campo Server Name, si el servidor es local, puede ser definido ingresando “.” (sin las comillas). De otra manera, un nombre apropiado de servidor debe ser ingresado.

Si el nombre del servidor es correcto, el usuario podrá elegir una de las bases de datos del servidor, donde los datos de la hoja de cálculo Excel serán importados, como se muestra en la imagen siguiente.

Choosing the Database the Excel data will be imported to

Cuando la conexión5 con la fuente y el destino es creada, Data Flow Tasks puede ser definido y configurado en la ventana Data Flow. En SSIS Toolbox, las tareas Excel Source y OLE DB Destination deben ser importadas a la ventana Data Flow, como se muestra a continuación.

Tasks are imported into the Data flow window from the SSIS Toolbox, the Excel Source, and the OLE DB Destination

Haga doble clic en la tarea Excel Source y se abrirá Excel Source Editor. Seleccionar la conexión Excel de la lista Connection manager permite al usuario elegir Name of the Excel sheet de la lista, como se muestra abajo.

Selecting the Excel connection and choosing the Name of the Excel sheet

En la pestaña Column, el usuario puede elegir qué columnas del archivo Excel serán importadas seleccionando las columnas deseadas, y renombrando las columnas resultantes, como se muestra en la imagen a continuación.

Choosing what columns from the Excel file will be imported

Para configurar OLE DB Destination, se lo debe conectar a Excel Source primero. Haga doble clic en OLE DB Destination y se abrirá el editor mostrado a continuación.

OLEDB Destination Editor

En la lista OLE DB connection manager, la conexión previamente definida debe ser seleccionada. En este caso, la conexión es establecida con la base de datos AdventureWorks2012 en el servidor local. En la lista de tablas la tabla destino deseada puede ser elegida, o una nueva tabla puede ser creada haciendo clic en el botón New e ingresando la sintaxis SQL.

Después de que la tabla destino es seleccionada, las columnas deben mapearse antes de importar los datos. Esto podría ser hecho desde la pestaña Mappings como muestra la imagen a continuación.

OLEDB Destination Editor - Mappings tab

No todas las columnas de la fuente necesitan ser importadas. El mapeo es una manera de filtrar los datos de entrada y apuntar a las columnas específicas en la tabla de la base de datos, donde la columna de la fuente será importada. Elegir <ignore> desde la lista de la columna de entrada la excluirá de la importación.

Después de que las columnas son mapeadas, el paquete SSIS puede ser ejecutado haciendo clic derecho en dicho paquete en Solution Explorer y eligiendo la opción Execute Package en la lista desplegable como se muestra en la imagen a continuación.

Choosing the Execute SSIS package option from the Solution Explorer

Después de ejecutar el paquete todos los datos de la hoja de cálculo Excel serán importados en la tabla seleccionada de la base de datos. La imagen a la derecha representa los datos importados a la base de datos SQL desde la hoja de cálculo Excel a la izquierda.

Dialog showing imported data into the SQL database (on the right), from the Excel worksheet (on the left)

Usando este método, los datos de la misma hoja de cálculo Excel pueden ser importados en la tabla seleccionada hasta que no haya modificaciones en Excel con tipos de datos. Si los datos son insertado o sobrescritos con otros nuevos, el proceso de importación se logrará exitosamente y los datos serán añadidos a la tabla en la base de datos SQL.

Recursos útiles:
Import data from excel to SQL server
SSIS packages for data importing

Marko Radakovic

Marko Radakovic

Marko is an IT and technical education teacher, who likes movies, video games, and heavy metal music.

He uses his spare time to play guitar, ride a bike and hang out with his friends. During winter, he likes skiing the most, but all other snow activities, too.

He is also author of various SQL Shack articles about SSIS packages and knowledgebase articles about ApexSQL Doc.

View all posts by Marko Radakovic
Marko Radakovic
8,863 Views