2013-07-12 1 views
0

Я пытаюсь удалить строку 10,754,960 в моем очень большом текстовом файле с разделителями. В идеале я хотел бы увидеть, какой текст в этой строке - импорт SQL-сервера говорит мне, что есть ошибка (я считаю, что требуется очистка данных).Как удалить определенную строку в текстовом файле с разделителями на 28 ГБ?

Худший случай, я просто хочу избавиться от него.

Любая идея с использованием программирования или какого-либо программного пакета? Текстовый файл слишком большой, чтобы открыть себя на моем ноутбуке.

+0

Почему вы помечаете SQL-сервер ** и ** mysql? – hd1

+0

Знаете ли вы номер строки? –

+0

Поскольку ошибка возникла при попытке импорта через SQL-сервер. Номер строки - 10 754 960. – ZJAY

ответ

0

Почему бы не подать файл в пакет импорта SSIS? Вы могли бы затем обернуть вывод DataViewer вокруг импорта, чтобы вы могли получить необходимую информацию о неудавшихся данных?

Или вы можете попробовать error descriptions

  • Первый Создайте задачу импорта данных с помощью SSMS
  • Сохранить пакет в вашей файловой системе, а затем отредактировать его в среде Business Intelligence студии
  • Следуйте инструкциям here добавить данные просмотр между источником и преобразованием данных
+0

Спасибо. Не могли бы вы подробнее рассказать о том, как это сделать явным образом? – ZJAY

1

sed - это инструмент для работы.

Если ваш на коробке Linux, следующая СЕПГ команда будет делать трюк: СЕПГ -i 10754960d /your/text/file.txt

Если вы находитесь на поле Windows, вы можете получить версию sed для Windows из Sourceforge по приведенной ниже ссылке, затем используйте приведенную выше команду: http://gnuwin32.sourceforge.net/packages/sed.htm

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

} 
Смежные вопросы