Удалить текст из текстового поля базы данных - PullRequest
1 голос
/ 07 января 2010

Недавно я попытался импортировать несколько сообщений из старого блога (SharePoint) в мой текущий блог (WordPress). Когда импорт завершился, множество неприятных тегов <div> и другого HTML попало в содержание поста, что испортило способ рендеринга моего сайта.

Я могу просмотреть поврежденные строки в базе данных MySQL и хочу узнать, есть ли способ выборочного удаления текста HTML, который может вызывать проблемы. Я мог бы, вероятно, взломать это в C # с помощью Разбор текста, но я хотел бы выяснить, как я могу сделать это, используя SQL, если смогу.

Если вы хотите увидеть полный текстовый образец того, как один из этих файлов выглядит, как он существует в текстовом поле базы данных, Я загрузил полный образец файла на свой веб-сайт .

Вот что я хочу сделать:

  • Удалить <![CDATA[<div><b>Body:</b> из начала каждого файла
  • Удалите метаинформацию в конце каждого файла, которая может выглядеть следующим образом:

    <div><b>Category:</b> SharePoint</div>
    <div><b>Published:</b> 11/12/2007 11:26 AM</div>
    ]]>
    
  • Удалите каждый <div> и закрывающий тег </div>, который может иметь атрибут класса, такой как:

    <div class=ExternalClass6BE1B643F13346DF8EFC6E53ECF9043A>
    

    Примечание. Шестнадцатеричная строка в конце ExternalClass может отличаться

Раньше я не использовал оператор Update в MySQL, и я не знаю, с чего начать выборочную замену текста в текстовом поле. Буду ли я использовать регулярное выражение из оператора SQL, чтобы помочь? Как мне выполнить оператор в отношении удаленной БД?

Ответы [ 3 ]

2 голосов
/ 07 января 2010

Как насчет очистки сообщений перед их импортом? Похоже, работать с локальным файлом, который вы можете рассматривать как текстовый файл, было бы намного проще. Затем вы можете использовать Perl или Python, чтобы решить проблему по своему вкусу перед импортом.

Предполагается, что у вас все еще есть доступ к данным, которые были завершены в SharePoint.

1 голос
/ 07 января 2010

Предполагая, что вы полны решимости использовать SQL, как вы сказали в своем вопросе, если у вас есть умение взломать его с помощью C #, вы сможете понять, как создать хранимую процедуру, которая использует курсор в цикле повторения / выборки. для выбора строк, строковых функций для обработки данных и обновления для обновления строки. Проверьте это:

http://dev.mysql.com/doc/refman/5.0/en/cursors.html

1 голос
/ 07 января 2010

Нет простого способа сделать это без использования серверной платформы, которую вы используете для обслуживания своего веб-сайта или к которой вы привыкли. Сам я бы использовал PHP или Perl для очистки данных, что в лучшем случае может быть непростым делом. Таким образом, ответ таков: это может быть сделано, но вы должны использовать для этого какой-то язык программирования / обработки, поэтому MySQL не сможет очистить данные.

...