2012-04-19 2 views
-1

У меня есть таблица, которую я пытаюсь экспортировать из базы данных SQL Server. Один из столбцов дает мне трудное время, и мастер импорта и экспорта бросает всевозможные ошибки. Как только вы удалите этот столбец, экспорт работает безупречно.SQL Server - экспорт данных с использованием регулярного выражения?

В столбце базы данных хранится полный HTML-документ в виде текстового типа. Я хочу экспортировать только текст из каждого поля из этого столбца между тегами DIV без HTML.

Например:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
    <STYLE type=text/css> P, UL, OL, DL, DIR, MENU, PRE { margin: 0 auto;}</STYLE> 
    <META content="MSHTML 6.00.2900.3429" name=GENERATOR> 
</HEAD> 
<BODY leftMargin=1 topMargin=1 rightMargin=1> 
    <FONT face=Tahoma size=2> 
     <DIV>[REDACTED TEXT THAT I WANT TO EXPORT]</DIV> 
    </FONT> 
</BODY> 
</HTML> 

То есть копия вставили из одной из записей. Каждая строка имеет тот же HTML-код в записи, но я просто хочу экспортировать отредактированный текст.

Отложить в сторону, что парень, который разработал эту базу данных/приложение, был придурком, как я могу захватить эти данные? Я даже соглашаюсь на то, чтобы вытащить полную запись с помощью HTML, если бы я мог заставить мастера экспорта работать.

Edit: Вот ошибки отчетов Мастер импорта и экспорта:

Операция остановлена ​​...
- Инициализация потока данных задач (Success)
- Инициализация соединений (Success)
- Установка команды SQL (успешное выполнение)
- Подключение источника источника (успешное)
- Установка целевого соединения (успех)
- Va lidating (Success)
- Подготовка к Execute (Success)
- Предварительно Execute (Success)
- Выполнение (Warning)
Сообщения
* Предупреждение: Подготовка SQL Task 1: многоступенчатая операция OLE DB, сгенерированные ошибки , Проверьте каждое значение статуса OLE DB, если оно доступно. Никакой работы не было. (Мастер импорта и экспорта SQL Server)
* Предупреждение: подготовка SQL-задачи 1: операция с несколькими шагами OLE DB сгенерировала ошибки. Проверьте каждое значение статуса OLE DB, если оно доступно. No работа осуществлен. (SQL Server мастер импорта и экспорта)

  • Копирование Query (Error)
    Сообщения
  • Ошибка 0xc0202009: Поток данных Задача 1: SSIS Код ошибки DTS_E_OLEDBERROR. Произошла ошибка OLE DB. Код ошибки: 0x00040EDA.

  • Ошибка 0xc0209029: поток данных Задача 1: Код ошибки SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Вход «Вход» Destination Input «(45)» не удался, поскольку произошел сбой кода ошибки 0xC020907B, а строка ошибки расположение на «входе» Назначение входа «(45)» указывает на ошибку при ошибке . Произошла ошибка в указанном объекте указанного компонента . До этого могут появляться сообщения об ошибках, содержащие более информацию об ошибке.

  • Ошибка 0xc0047022: поток данных Задача 1: Код ошибки SSIS DTS_E_PROCESSINPUTFAILED.Метод ProcessInput на компоненте Ошибка «Целевое назначение - запрос» (34) с кодом ошибки 0xC0209029, а обработчик ввода «Destination Input» (45). Выбранный компонент возвратил ошибку из метода ProcessInput. Ошибка специфична для , но ошибка является фатальной и приведет к прекращению работы задачи потока данных . Сообщения об ошибках могут быть отправлены до этого с дополнительной информацией об ошибке.

  • Ошибка 0xc02020c4: поток данных Задача 1: попытка добавить строку в буфер задачи потока данных не с кодом ошибки 0xC0047020.

  • Ошибка 0xc0047038: поток данных Задача 1: код ошибки SSIS DTS_E_PRIMEOUTPUTFAILED. Метод PrimeOutput на компоненте «Источник

  • Запрос« (1) возвращенный код ошибки 0xC02020C4. Компонент возвращал код сбоя, когда движок трубопровода назывался PrimeOutput(). Значение кода отказа определяется компонентом, но ошибка является фатальной, и трубопровод прекратил выполнение. Там может быть ошибка сообщений, размещенных до этого, с дополнительной информацией о сбое.

  • после выполнения (Success)
    сообщения

  • Информация 0x4004300b: Задача потока данных 1: "Компонент "Destination - Query"(34)" написал 7465 строк.
+0

Какие ошибки в его метания ? –

+0

@FrancisAvila Я обновил OP. –

+0

Ничего, если я ограничу экспорт до 5000 строк, он работает. груши, я нажимаю лимит Excel слишком много строк. –

ответ

0

В вашем заявлении выберите для этого поля, извлечь только ту часть, которую вы хотите с помощью SUBSTRING и CHARINDEX, чтобы вырезать детали между тегами, предполагая, что вы действительно только один такой тег в поле зрения. Ниже [HTML] на самом деле произнесения поля в VARCHAR, поэтому там, где вы видите [HTML] вы поставите это:

CAST([YourHTMLFieldName] AS VARCHAR(MAX)) 

И это, по существу, говорит «дайте мне текст между и:

SELECT SUBSTRING([HTML], CHARINDEX('<DIV>', [HTML]), CHARINDEX([HTML], '</DIV>') - CHARINDEX([HTML], '<DIV>')) 

Вам, вероятно, придется играть с ним немного, как если выход ошибочно включает в себя «» тег вы можете изменить его на «CHARINDEX („“) + 5».

+0

Проект изменился, и мне больше не нужно экспортировать данные. Я приму свой ответ, хотя, похоже, что мне нужно было это сделать. –

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