04 junio 2015

Importando Flat File de Ancho Fijo

Problema

Desea importar un archivo de texto de ancho fijo en SQL Server.

Solución

Crear un paquete SSIS y definir un Data Flow usando un administrador de conexión Flat File configurado para aceptar archivos de ancho fijo. A continuación se explica cómo se puede hacer esto.
1.    Crear un paquete SSIS, preparando un origen Flat File y un destino OLEDB.
2.    Crear un administrador de conexión OLEDB conectando a BDBlog_Staging y llámelo BDBlog_Staging_OLEDB.
3.    Crear un administrador de conexión para el archivo plano, dando clic derecho en la pestaña Connection Managers y seleccionando New Flat File Connection.
Archivo de Texto: StockAnchoFijo.txt
4.    Una vez que haya especificado el nombre de la conexión y el archivo de origen (C:\SSIS\Archivos\StockAnchoFijo.txt), especificar que el formato es de ancho fijo, como se muestra en la figura.
 
5.    Visualice el panel Columns haciendo clic en Columns en la izquierda de la caja de diálogo. Debería ver algo como en la figura.
6.    Introduzca el ancho de fila. Si no lo sabe, pruebe con un numero grande! El marcador de fila rojo saltará a la posición que ha introducido. Siempre puede afinar la longitud basado en los datos que pueden ver previamente en la cuadrícula Source Data Columns del panel Columns del Flat File Connection Manager Editor.
7.    Desplácese hacia la izquierda y la derecha a través de los datos. Agregue los delimitadores de columna que necesite haciendo clic en la regla. Debe terminar con algo como en la figura.
8.    Haga clic en OK para confirmar los ajustes de Connection Manager. Ahora puede agregar el administrador de conexión al origen Flat File (a menos que lo esté creando como parte de la definición del origen Flat File).
9.    Conecte el origen Flat File a la salida OLEDB.
10.  Configure la salida OLEDB para utilizar el administrador de conexión BDBlog_Staging_OLEDB.
11.  Añadir las asignaciones de columna y seleccione o cree una tabla de datos y ejecute el paquete de importación.
Funcionamiento
En ocasiones, puede que tenga que hacer frente a un archivo de ancho fijo que requiere importar a SQL Server. Esto es muy similar a un archivo delimitado, excepto que tiene que decirle a SSIS donde la columna se rompe. Todo lo que sabe es que el archivo de origen es completamente de ancho fijo, que tiene las siguientes características:
·         Todas las filas tienen el mismo ancho.
·         Todas las columnas son de un ancho fijo (que puede variar para cada columna, por supuesto).
·         No existe Retorno de Carro / Avance de Línea (CR/LF) al final de cada fila.
Esto es muy similar a importar un archivo delimitado. Como es el caso de los archivos delimitados, se puede establecer lo siguiente:
·         Sea o no que la primera fila contenga los nombres de columna
·         Las filas de cabecera para saltar
·         El delimitador de texto
·         Los nombres de columnas
·         Los tipos de datos de columnas
·         Anchos de columnas de salida
Puede haber momentos en que necesite importar un archivo plano donde todas las columnas son de ancho fijo a excepción de la última, que puede ser de longitud variable o donde cada fila termina con un CR/LF. Esto también se conoce como archivo de texto ragged right. Esto hace a un archivo desigual por la derecha esencialmente un archivo de texto de ancho fijo con una importante, y fundamental, diferencia. Cada fila tiene una CR/LF al final. En todos los demás aspectos, el proceso de importación es el mismo que para los orígenes de ancho fijo.

1 comentarios:

Narcizo dijo...

Este post es un ejemplo de un archivo plano de ancho fijo y un alcance de uno desigual por la derecha. espero les sea se utilidad.