如何删除28GB分隔文本文件中的特定行?

时间:2013-07-12 01:03:04

标签: mysql sql sql-server database

我正在尝试在我的超大分隔文本文件中删除第10,754,960行。理想情况下,我想查看此行中的文本是什么 - SQL服务器导入告诉我存在错误(我认为需要进行一些数据清理)。

最糟糕的情况是,我只是想摆脱它。

是否有使用编程或某些软件包的想法?文本文件太大,无法在笔记本电脑上打开。

3 个答案:

答案 0 :(得分:1)

sed是这项工作的工具。

如果您在Linux机器上,以下sed命令将执行此操作: sed -i 10754960d /your/text/file.txt

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

答案 1 :(得分:0)

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

或者您可以尝试error descriptions

  • 首先使用SSMS创建导入数据任务
  • 将包保存到文件系统,然后在Business Intelligence Studio
  • 中对其进行编辑
  • 按照说明here在源和数据转换之间添加数据查看器

答案 2 :(得分: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();

}