sql-server - txt - importar archivo csv a sql server
¿Cómo importar un archivo CSV de longitud de registro variable usando SSIS? (5)
¿Alguien ha podido obtener un archivo de texto de longitud de registro variable (CSV) en SQL Server a través de SSIS?
He intentado una y otra vez obtener un archivo CSV en una tabla de SQL Server, utilizando SSIS, donde el archivo de entrada tiene diferentes longitudes de registro. Para esta pregunta, las dos longitudes de registro diferentes son 63 y 326 bytes. Todas las longitudes de registro se importarán en la misma tabla de 326 bytes de ancho.
Hay más de 1 millón de registros para importar.
No tengo control de la creación del archivo de importación.
Debo usar SSIS.
He confirmado con MS que esto ha sido reportado como un error. He intentado varias soluciones. La mayoría ha sido donde trato de escribir código personalizado para interceptar el registro y no puedo hacer que funcione como quiero.
¿Por qué no puede importarlo como un archivo de prueba y establecer el delimeter de columna como "," y el delimeter de la fila como CRLF?
No debería tener problemas para importar este archivo. Solo asegúrese de que al crear el administrador de conexión de archivos planos, seleccione Formato delimitado , luego ajuste la longitud de la columna SSIS a la longitud máxima de columna del archivo para que pueda acomodar cualquier dato.
Parece que está utilizando el formato de ancho fijo, que no es correcto para los archivos CSV (ya que tiene una columna de longitud variable), o tal vez ha configurado incorrectamente el delimitador de la columna.
Tuve un problema similar y usé un código personalizado (Tarea de script) y un Componente de script en la pestaña Flujo de datos.
Tengo una fuente de archivo plano que alimenta un componente de script. Dentro de allí utilizo el código para manipular los datos entrantes y repararlo para el destino.
Mi problema era que el proveedor estaba usando ''000000'' como falta de fecha, y otro coloumn tenía un problema de relleno / recorte.
Mismo problema. En mi caso, el archivo CSV objetivo tiene registros de encabezado y pie de página con formatos completamente diferentes al cuerpo del archivo; el encabezado / pie de página se utiliza para validar la integridad del procesamiento de archivos (fecha / horas, recuentos de registros, totales de cantidad - "suma de comprobación" por cualquier otro nombre ...). Este es un formato común para archivos de entornos "mainframe", y aunque todavía no lo he comenzado, espero tener que usar scripts para quitar el encabezado / pie de página, guardar el resto como un nuevo archivo, procesar el nuevo archivo, y luego haga la validación. No se puede esperar exactamente que MS tenga ese dispositivo de fábrica (pero seguro que sería bueno, ¿no?).
Puede escribir una tarea de script usando C # para recorrer cada línea y rellenarla con la cantidad adecuada de comas para rellenar los datos. Esto supone, por supuesto, que todos los datos se alinean con las columnas adecuadas.
Es decir, al leer cada registro, puede "contar" el número de comas. Luego, solo agregue X comas al final del registro hasta que tenga el número correcto de comas.
Excel tiene un problema que hace que este tipo de archivo se cree al convertir a CSV.
Si puede hacer esto "a mano", la mejor manera de resolver esto es abrir el archivo en Excel, crear una columna en el "final" del registro y llenarlo completamente con 1
so algún otro carácter.
Desagradable, pero puede ser una solución rápida.
Si no tiene la capacidad para hacer esto, puede hacer lo mismo programáticamente como se describió anteriormente.