Importando un Flat File Delimitado
Problema
Desea importar un archivo plano sobre
una base regular y/o aplicar la transformación de datos como parte de un
proceso ETL estructurado.
Solución
Crear un paquete SSIS para importar el archivo.
Así es como se hace:
Archivo
de texto: Invoices.txt
2.
Agregar
una tarea Data Flow en el panel Control Flow. Editar esta tarea al hacer
cualquiera de lo siguiente:
·
Doble
clic.
·
Clic
derecho y seleccionar Edit.
·
Clic en la
ficha Data Flow.
3. Agregue un origen Flat File de los orígenes Data
Flow en la caja de herramientas. Haga doble clic en el origen Flat File para editarlo.
Debería ver el cuadro de diálogo mostrado en la figura.
4. Haga clic en New para especificar la conexión
de archivos, que abre el Flat File Connection Manager Editor. Busque y
seleccione el archivo de origen (o escríbalo si lo prefiere). En este ejemplo,
es C:\SSIS\Archivos\Invoices.Txt.
Especifique si los nombres de columna están en la primera fila, ingresar el
calificador de texto y seleccione el delimitador de fila (o dejar los valores
por defecto). Debe terminar con algo como lo que se ve en la figura.
5. Haga clic en Advanced. Para cada columna de
salida, definir el tipo de datos y la longitud. El cuadro de diálogo debe ser
similar a la de la figura.
6. Haga clic en OK dos veces para confirmar y
volver al panel Data Flow.
7. Agregue un destino OLEDB de la caja de
herramientas al panel de Data Flow, y conecte la salida (la flecha verde) del
origen de texto al destino OLEDB.
8. Haga doble clic en el destino OLEDB para
editarlo. Haga clic en New para agregar un administrador de conexión OLEDB que
configure para conectarse a la base de datos de destino (BDBlog_Staging en este
ejemplo). Como alternativa, puede seleccionar un administrador de conexión
existente.
9. Seleccione la tabla de destino (dbo.Invoice en
este ejemplo). Alternativamente, haga clic en New para crear una nueva tabla,
que está diseñada de forma automática para asignar a la estructura de origen
percibida. Puede cambiar el nombre de la tabla de destino del nombre sugerido
por SSIS si lo prefiere. Confirme con OK.
10. Haga clic en Mappings de la lista del lado
izquierdo del cuadro de diálogo OLE DB Destination Editor. Asegúrese de que los
datos de origen se asignan a las columnas de destino.
11. Haga clic en OK.
12. Haga clic en Debug ➤ Start
Debugging para importar los datos del archivo de texto.
SSIS
importará sus datos.
Funcionamiento
En el mundo real de la importación de datos,
SSIS es probablemente la herramienta que más se utilizará. No obstante, siempre
ayuda si se puede abrir el archivo de origen para obtener un vistazo de su
contenido, o se le ha informado de su contenido lo suficiente como para saber
·
Si
contiene encabezados de columna o no.
·
Si los
tipos de datos y longitudes son para cada columna de datos.
·
Que el
archivo siempre contenga el mismo número de delimitadores de columna.
Si no tiene la información esencial acerca de
los datos en el archivo de texto disponible, sin embargo, entonces puede
recoger metadatos para el archivo de origen de SSIS mediante la vista previa de
los datos y conseguir que SSIS sugiera los tipos de datos. Asumiendo que tiene
esta información, SSIS le ayudará a través del proceso de importación de un
archivo de texto. En el caso de archivos planos que no son demasiado grandes,
puede abrir el origen en un editor de texto y tratar de deducir los metadatos
directamente.
Nota: Si no se especifica ningún tipo de datos al
configurar la tarea Data Flow, SSIS asume que cada columna es VARCHAR(50).
Definir y ajustar los tipos de datos como el
paso a través de SSIS puede significar un montón de trabajo. Afortunadamente,
SSIS tiene maneras para ayudarle en esto. Curiosamente, el verdadero trabajo se
hace en el administrador de conexión Flat File, no en la tarea de Origen de Datos.
Si encuentra dificultades, la primera cosa a
tener en cuenta es, probablemente, las especificaciones de archivos de texto básicas.
Si nos fijamos en el cuadro de diálogo Flat File Connection Manager, que se
muestra en el paso 4 del ejercicio, podrá ver los elementos que figuran en la tabla
en el panel General.
Text
Qualifier. Indica que los
datos (de cualquier tipo) están encerrados entre comillas. Esto podría ser, por
ejemplo, porque el dato textual contiene el delimitador de columna (con
frecuencia una coma). De esta manera, tales caracteres son manejados elegantemente.
En cualquier caso, las comillas son eliminadas durante el proceso de
importación, obviando la necesidad de eliminarlas después de la importación.Las
siguientes son las que probablemente necesitará con más frecuencia:
Column names in the first data row. Indica
que la primera fila se compone de la cabecera de las columnas. Como el nombre indica,
la primera fila de los datos es tomada para ser los nombres de columna, y, en
consecuencia, no son importadas.
Determinar Automáticamente los Tipos de Datos
Problema
Quiere deducir la estructura de los datos en un
archivo plano de origen.
Solución
Use la opción de SSIS Suggest Types en el
administrador de conexión Flat File.
Se explica el enfoque simple para conseguir una
aproximación razonable de los tipos de datos reales y longitudes en un archivo
de texto de origen. Esto también se hace usando el panel avanzado del Flat File
Connection Manager Editor. Como este se basa en el ejercicio anterior, para
evitar la repetición, es necesario haber leído el ejercicio anterior, antes de ver
este ejercicio.
1.
Seguir los
pasos del 1 a 4 del ejercicio anterior.
2.
Clic en Advanced.
3. Clic en Suggest Types. Aparecerá el cuadro de
diálogo Suggest Column Types, como se muestra en la figura.
Verá que todos los tipos de datos (y
longitudes, donde sea apropiado) han sido mostrados y ajustados en el panel Advanced
del cuadro de diálogo.
Funcionamiento
Probablemente ha notado que al importar
archivos de texto, el administrador de conexión Flat File asume que todas las
columnas de origen en un archivo de texto delimitado son cadenas con una
longitud de 50 caracteres. Esto puede ser demasiado restrictivo por varias
razones:
·
Muchos
campos no son cadenas y consecuentemente requieren la conversión del tipo de
datos como parte del paquete SSIS.
·
La
longitud sugerida de 50 caracteres es insuficiente para muchos campos de
cadena, y puede causar errores de paquete en tiempo de ejecución.
·
Incluso si
todas las columnas de origen pueden caber en 50 caracteres, esto es frecuentemente
demasiado amplio, ya que reduce el número de registros que pueden caber en el
búfer del pipeline de SSIS y, en consecuencia, ralentiza el proceso de carga.
Con frecuencia, por supuesto, el problema es
resuelto por las personas que proporcionan los archivos de origen, quienes han
entregado meticulosamente una completa descripción de los tipos de dato del
contenido del archivo. Sin embargo, puede haber ocasiones en que esto no sea el
caso, y tiene que deducir, descubrir o adivinar los tipos de campo (o columna
si lo prefiere) y longitudes en un archivo de origen. Esto puede ser un proceso
engorroso, especialmente si significa un ciclo basado en prueba y error de
carga y recarga de un archivo de texto, hasta que por fin se encuentre, para la
columna de cada origen, un tipo de datos aceptable. En consecuencia, una
solución mucho más simple es pedir a SSIS adivinar los tipos de datos y
longitudes por nosotros. Cierto es que, puede abrir algunos archivos para mirar
los datos de origen. Una rápida mirada es rara vez una muestra analítica precisa.
Es más, habrá algunos archivos planos de origen que son tan grandes que tardarían
una eternidad para abrirlos o simplemente colapsará su editor de texto
favorito.
Ayuda a entender sus opciones para determinar
los tipos de datos en el archivo de origen, conforme a lo dispuesto en la tabla.
Suponiendo
que sabe qué columna necesita establecer a qué tipo de datos, así como establecer
un delimitador de columna específica para una o más columnas, es posible que
desee afinar los tipos de datos utilizando el panel Advanced. La tabla describe
las opciones disponibles.
Por
ejemplo, si desea anular los valores actuales para un tipo de datos de una
columna, puede establecer el tipo de datos.
Podría cambiar de datos de origen, no tendrá
que rehacer toda la estructura de asignación de columna desde cero, como SSIS
le permite agregar o quitar columnas para ajustar el paquete a los cambios en
la estructura de datos de origen.
Para agregar una columna, haga lo siguiente:
1.
Clic en la
columna que precede (o sigue) a la columna a insertar.
2.
Clic en la
flecha de la derecha del botón New. Seleccione Insert Before (o After). Una nueva columna es agregada a la estructura de mapeo.
Al hacer clic en New o Add Column se inserta
una nueva columna después de las columnas existentes. Eliminar una columna es
tan simple como lo siguiente:
1.
Seleccione
la columna a remover.
2.
Haga clic
en Delete.
El panel Advanced del administrador de conexión
Flat File también le permite especificar, para cada columna, si la columna está
encerrada entre comillas. Todo lo que tiene que hacer es configurar TextQualified a True, si este es el caso, y False si no hay
comillas.