0

我正在尝试删除我非常大的分隔文本文件中的第 10,754,960 行。理想情况下,我想看看这一行上有什么文本 - SQL 服务器导入告诉我有一个错误(我相信需要进行一些数据清理)。

最坏的情况,我只想摆脱它。

任何想法使用编程或一些软件包?文本文件太大,无法在我的笔记本电脑上自行打开。

4

3 回答 3

1

sed 是完成这项工作的工具。

如果你在 Linux 机器上,下面的 sed 命令可以解决问题: sed -i 10754960d /your/text/file.txt

如果您使用的是 Windows 机器,您可以通过以下链接从 Sourceforge 获得适用于 Windows 的 sed 版本,然后使用上面的命令:http: //gnuwin32.sourceforge.net/packages/sed.htm

于 2013-07-12T01:54:10.893 回答
0

为什么不将文件输入 SSIS 导入包?然后,您可以围绕导入包装 DataViewer 输出,以便检索您需要的有关失败数据的哪些信息?

或者您可以尝试错误描述

  • 首先使用 SSMS 创建导入数据任务
  • 将包保存到您的文件系统,然后在 Business Intelligence Studio 中对其进行编辑
  • 按照此处的说明在源和数据转换之间添加数据查看器
于 2013-07-12T01:14:21.410 回答
0

这是一段 C# 代码,可让您从代码中执行此操作。这基本上是通过读取现有文件来创建新文件,但会跳过有错误的行。

private const string OLD_FILE = @"C:\file1.csv";
private const string NEW_FILE = @"C:\file2.csv";

private void RemoveLine()
{
    StreamReader reader = new StreamReader(OLD_FILE);
    StreamWriter writer = File.CreateText(NEW_FILE);

    int counter = 1;
    while (!reader.EndOfStream)
    {
        if (counter != 10754960)
        {
            writer.WriteLine(reader.ReadLine());
        }
        counter++;
    }
    writer.Close();
    reader.Close();

}
于 2013-07-12T10:33:29.757 回答