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();