我很难尝试从平面文件到数据库进行简单的数据加载。 问题是存在错误的行或至少没有格式化为该文本文件中的数据的行。
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
我在平面文件连接上使用固定宽度格式并尝试使用条件分割来解决问题但是一旦它到达空白区域,它就会停止加载数据。
是否可以根据特定的行数加载数据?因为最后,这是我想要的唯一文本文件:
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
Sample.txt文件LINK。
答案 0 :(得分:1)
由于源文本文件不遵循分隔格式标准,因此您需要使用脚本任务,并编写自定义脚本来处理所有这些空格和错误数据。您需要将文本文件转换为某种分隔格式,然后才能按要求进行处理。
脚本任务的逻辑是 - 逐行读取文件,并在执行遇到坏线/数据时放入逻辑以跳过。通过这样做,结果将采用标准分隔格式。
在脚本中尝试以下代码,您可以使用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();