una txt registros otra insertar importar enviar ejecutar desde datos copiar convertir sql-server ssis flat-file dataflow

sql-server - registros - importar txt a sql server 2012



Registre solo ciertas filas de un archivo de texto en SSIS (1)

Me está costando trabajo hacer una simple carga de datos desde un archivo plano a una base de datos. El problema es que hay filas malas o al menos filas que no están formateadas como datos en ese archivo de texto.

Sample.txt:

Stackoverflow School at Philippines Record: 100101 Date: 6/20/2014 Name: Age: About: -------------------- --- -------------------------- Coolai 19 Bad Row Question Qwerty 17 Java Qwerty 19 C# *User1 21 Dynamic Data User4 27 Assembly Stackoverflow School at Nippon Record: 100102 Date: 6/23/2014 Name: Age: About: -------------------- --- -------------------------- Sayuri 19 MSSQL Niwatori 21 Dynamic Data Jagaimo 27 Assembly *User7 21 Dynamic Data User9 27 Assembly

Estoy utilizando el formato de Ancho fijo en la Conexión de archivos planos e intenté abordar el problema mediante la división condicional, pero una vez que alcanza el espacio en blanco, deja de cargar los datos.

¿Es posible cargar los datos dependiendo de un cierto recuento de filas? Porque al final, esto es lo único que quiero del archivo de texto:

Coolai 19 Bad Row Question Qwerty 17 Java Qwerty 19 C# User1 21 Dynamic Data User4 27 Assembly Sayuri 19 MSSQL Niwatori 21 Dynamic Data Jagaimo 27 Assembly User7 21 Dynamic Data User9 27 Assembly

Archivo Sample.txt LINK .


Como el archivo de texto de origen no sigue el formato estándar delimitado, debe usar la tarea de script y escribir un script personalizado para manejar todos esos espacios en blanco y los datos incorrectos. Necesita convertir el archivo de texto en un formato delimitado, luego puede procesarse según los requisitos.

La lógica para la tarea de script es: leer el archivo línea por línea y poner la lógica para cuándo omitir cuando la ejecución llegue a líneas / datos incorrectos. Al hacer esto, el resultado estará en formato delimitado estándar.

Pruebe a continuación el código en la secuencia de comandos, puede usar los datos extraídos de List<string> goodData

string line; bool isNextLineGoodData = false; List<string> goodData = new List<string>(); // Read the file and display it line by line. System.IO.StreamReader file = new System.IO.StreamReader("c://csv.txt"); while ((line = file.ReadLine()) != null) { if (isNextLineGoodData) { if (line=="") { isNextLineGoodData = false; } else { goodData.Add(line); } } if (line=="") { isNextLineGoodData = false; } if (line.StartsWith("---")) { isNextLineGoodData = true; } } file.Close();