Pregunta

Alguien ha sido capaz de conseguir una variable longitud de registro de archivo de texto (CSV) en SQL Server a través de SSIS?

He intentado una y otra vez para obtener un archivo CSV a una tabla de SQL Server, con SSIS, donde el archivo de entrada tiene diferentes longitudes de registro.Para esta pregunta, las dos diferentes longitudes de registro son 63 y 326 bytes.Todas las longitudes de registro será importado en el mismo 326 byte ancho de la tabla.

Hay más de 1 millón de registros para importar.
No tengo control de la creación del archivo de importación.
Debo uso de SSIS.
Me han confirmado con MS que esto ha sido reportado como un error.He intentado varias soluciones.La mayoría han sido en el trato de escribir código personalizado para interceptar el registro y me parece que no puede conseguir que funcione como quiero.

¿Fue útil?

Solución

He tenido un problema similar, y utiliza el código personalizado (Tarea de secuencia de Comandos), y un Componente de secuencia de Comandos bajo la pestaña Flujo de Datos.

Tengo un Archivo Plano de la Fuente de alimentación en un Componente de secuencia de Comandos.En su interior, no puedo utilizar el código para manipular el incomming de datos y arreglarlo para el destino.

Mi problema fue que el proveedor estaba usando '000000' como no hay fecha disponible, y otra columna había un relleno/trim problema.

Otros consejos

Usted no debe tener ningún problema al importar este archivo.Sólo asegúrese de que cuando se crea el Archivo Plano administrador de conexión, seleccione Delimitado formato, a continuación, establezca SSIS longitud de la columna a la máxima longitud de columna del archivo de modo que se puede acomodar a cualquier dato.

Parece como usted está usando el formato de ancho Fijo, lo cual no es correcto para los archivos CSV (ya que usted tiene una longitud variable de la columna), o tal vez usted ha configurado incorrectamente el delimitador de columna.

Mismo problema.En mi caso, el objetivo de archivo CSV que ha encabezado y pie de página de los registros con los formatos completamente diferentes de las que el cuerpo del archivo;el encabezado/pie de página se utilizan para validar la integridad de procesamiento de archivos (fecha/horas, registro de cuenta, la cantidad de totales - "checksum" por cualquier otro nombre ...).Este es un formato común para los archivos de "mainframe" entornos, y aunque no he empezado aun, espero a tener que utilizar secuencias de comandos para quitar el encabezado/pie de página, guardar el resto como un archivo nuevo proceso el nuevo archivo y, a continuación, realizar la validación.No pueden exactamente esperar MS a tener que salir de la caja (pero seguro que sería bueno, ¿no?).

Usted puede escribir una secuencia de comandos de tareas, el uso de C# para iterar a través de cada línea y la almohadilla con la cantidad adecuada de comas para rellenar los datos.Esto supone, por supuesto, que todos los datos se alinea con las columnas correspondientes.

I. e.al leer cada registro, no se puede "contar" el número de comas.A continuación, sólo anexar X número de comas al final de la grabación hasta que se tiene el número correcto de comas.

Excel tiene un problema que hace que este tipo de archivo que se crea cuando la conversión a formato CSV.

Si puede hacerlo "a mano" la mejor manera de resolver esto es abrir el archivo en Excel, crear una columna en el "final" del disco, y llenar todo el camino hacia abajo con 1s o algún otro carácter.

Desagradable, pero puede ser una solución rápida.

Si usted no tiene la capacidad para hacer esto, usted puede hacer lo mismo mediante programación como se describe anteriormente.

¿Por qué no puede importarlo como un archivo de prueba y el conjunto de la columna delimitador a "," y la fila delimitador para CRLF?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top