Está en la página 1de 14

CMO CONFIGURAR EL CONTENEDOR FOREACH PARA CARGAR MLTIPLES ARCHIVOS DE EXCEL

Una necesidad bsica en varias organizaciones es la posibilidad de cargar de manera fcil y ptima, varios archivos de Excel en una fuente de datos consolidada. Y si la organizacin cuenta con unos cuantos archivos sera una labor manual, pero sencilla. Ahora bien, qu pasa en el escenario en el cual la organizacin tiene cientos de archivos de Excel? Quiz en este caso sera necesario pensar en una tarea que automatice el proceso. SQL Server 2008 Integration Services permite la configuracin de un paquete que ejecute de manera iterativa la carga de archivos planos con la configuracin del contenedor Foreach. El siguiente artculo describe cmo configurar un cotenedor Foreach para cargar mltiples archivos de Excel. PASO / DETALLE En primer lugar es importante contar con la fuente de datos. En este caso, se tienen 3 archivos de Excel con los nuevos clientes de Intermezzo BI por mes. Es importante que los archivos de Excel cuenten con el mismo formato (iguales columnas, igual tipo de datos, etc). IMAGEN

Para este ejemplo, cada archivo cuenta con una tabla con 4 columnas en la primer hoja del libro.

Ingresar a Business Intelligence Development Studio y crear un proyecto de SQL Server Integration Services, asigne un nombre tanto a la solucin como al proyecto y clic en OK.

En el rea de Diseo del Control Flow, agregue un DataFlow Task, y cambie el nombre por Carga Excel.

De doble clic sobre Carga Excel. Automticamente cambiar al rea de Diseo de Data Flow. Agregue un Excel Source y un OLE DB Destination. Conecte el Excel Source con el OLE DB Destination.

En el rea de Connection Managers, clic derecho y clic en New Connection, para agregar una nueva conexin a un archivo de Excel.

En la ventana Add SSIS Connection Manager, seleccione el tipo EXCEL y clic en Add.

En la ventana Excel Connection Manager, seleccione cualquiera de los archivos de Excel a cargar. Este paso es importante ya que se requiere una configuracin inicial del conector a Excel. En un paso ms adelante, cambiar de manera iterativa la ruta del archivo de Excel. Clic en OK.

En el rea de diseo del DataFlow, d doble clic sobre Excel Source. En la ventana Excel Source Editor seleccione la conexin que acaba de crear en OLE DB connection Manager. En Data Access Mode seleccione Table or View y en Name of the Excel Sheet seleccione la pestaa que contiene la informacin. En este caso Sheet1$.

En la pestaa Colums, verifique que las columnas del archivo de Excel se encuentren seleccionadas. Clic en OK.

En la seccin Connection Manager clic derecho y clic en New OLE DB Connection. Ac se crear una conexin a una fuente de SQL Server 2008, para cargar la informacin de los archivos de Excel en una tabla.

En la ventana Configure OLE DB Connection Manager, configure una nueva conexin a una base de datos. En este caso se seleccion AdventureworksDW2008. Clic en OK.

En el rea de Diseo de DataFlow, doble clic sobre OLE DB Destnation. En la ventana OLE DB Destination Editor configure la tabla donde se va a guardar la informacin de los archivos de Excel. En este caso se llama ClientesIntermezzo.

En la pestaa Mappings, verifique que las columnas de la fuente son asignadas correctamente con las columnas del Destino. Clic en OK

Los siguientes pasos describen la forma de hacer iterar este flujo, para que lo haga con todos los archivos de Excel. Cree una variable al alcance del Paquete. Ubique el cursor sobre alguna rea en el Control Flow. En la barra de Mens, clic en SSIS y VARIABLES. Aparecer una nueva ventana. Agregue una nueva variable, con las siguientes propiedades: Name: PathFile Scope: Package Data Type: String Value: (en este caso, se coloca la ruta del archivo de Excel que se configur en el Excel Source ) C:\Excel\Clientes Septiembre.xlsx

En el rea de diseo del Control Flow, agregue un Foreach Loop Container, y ubique el DataFlow Carga Excel dentro del contenedor (tal como se muestra en la figura). Doble clic sobre el contenedor Foreach Loop Container.

En la ventana Foreach Loop Editor, en la pestaa Collection, seleccione el Enumerador Foreach File Enumerator, el cual permite enumerar archivos (como en este caso, enumerar los archivos de excel). En la seccin Enumerator Configuration, en Folder, Escriba la ruta de la carpeta que contiene todos los archivos de Excel a cargar. En este caso C:\Excel. En Files:, escriba *.xlsx, esto con el fin de que busque todos los archivos con una extensin .xslx. Si desea que el contenedor busque dentro de todas las subcarpetas dentro de la carpeta raz, clic en Traverse subfolders.

En la pestaa Variable Mappings, seleccione la variable creada anteriormente de la lista de variables User:PathFile. Clic en OK.

La ltima parte es configurar la cadena de conexin del Excel Connection Manager para que tome el valor de la variable de manera dinmica tras cada iteracin del contenedor. En la seccin Connection Manager, clic derecho sobre Excel Connection Manager y Clic en Properties.

En la ventana Properties, Clic en la Elipse () .

En la ventana Property Expressions Editor, agregue la propiedad ConnectionString, y de clic en la Elipse () sobre Expression.

En la ventana Expression Builder, se agregar la expresin para la cadena de conexin del archivo de Excel. Esta cadena de conexin puede variar entre Excel 2003 y 2007. En este caso, la expresin corresponde a Excel 2007. "Provider=Microsoft.ACE.OLEDB.12.0;D ata Source=" +@[User::PathFile]+";Extended Properties=\"Excel 12.0;HDR=YES\";" Observe cmo en la Expresin se agrega la variable PathFile, la cual guarda la ruta del archivo de Excel tras cada iteracin. Clic en OK dos veces.

Por ltimo, ejecute el paquete. Compruebe que termina exitosamente.

Confirme que los datos de todos los archivos de Excel cargaron en la table de SQL Server 2008.

Luis Alberto Rivera


Intermezzo BI Lead SQL Server Team | Microsoft Colombia alberto@intermezzo-bi.com Blog: http://www.intermezzo-bi.com/alberto Conozca SQL Server 2008: http://www.microsoft.com/sql/ Business Intelligence: http://www.microsoft.com/bi/ Comunidad Business Intelligence: http://www.intermezzo-bi.com

También podría gustarte