2012-06-22 2 views
1

Я использовал SSIS и SharePointListAdapters для импорта данных из моего списка SharePoint 2010 и размещения их в таблице SQL Server 2008. Есть примерно 500 строк данных. Теперь задача состоит в том, чтобы проанализировать данные соответствующим образом. У меня есть несколько столбцов, вокруг которых есть html-теги.Анализ данных SQL Server

Для получения, например, в колонке проекта Описание изделия имеет данные, как проекта Описание изделия

<div class="ExternalClass914BB5DA5CB142EB854C739EAACEE3BB"> 
    <div>Import Data from SharePoint list to Database. 
    </div> 
</div> 

На прибегая к помощи, я нашел ниже ФУНКЦИИ. Он работает так, как ожидалось. Мои вопросы: как отредактировать эту функцию, чтобы взять имя столбца Project Desc в качестве параметра, чтобы все данные в этом конкретном столбце отбрасывали html-теги. Любая мысль? Большое спасибо в Adv!

create function dbo.StripHTML(@text varchar(max)) returns varchar(max) as 
begin 
    declare @textXML xml 
    declare @result varchar(max) 
    set @textXML = @text; 
    with doc(contents) as 
    ( 
     select chunks.chunk.query('.') from @textXML.nodes('/') as chunks(chunk) 
    ) 
    select @result = contents.value('.', 'varchar(max)') from doc 
    return @result 
end 
go 
select dbo.StripHTML('<div class="ExternalClassB1D90504EAFF42BE8A8056E686F4E195"> <div>Import Data from SharePoint list to Database.</div></div>') 

ответ

1

После того как вы создали функцию, вы просто использовать его, как если бы это было нормальное поле в таблице, и поставить исходную таблицу и поле в том месте, которое идет параметр ...

SELECT 
    dbo.StripHTML(yourTable.yourColumn) AS yourResults 
FROM 
    yourTable 

(вы не изменить функцию, вы просто поставить его с данными из таблицы.)

+0

Thanks Dems. Это было так просто. Большое спасибо. :) Я могу проголосовать за ваш ответ через 4 минуты. Поэтому я увижу ваш голос за несколько минут. :) – Nemo

1

SQL и T-SQL не имеют средств для разбора HTML. Не путайте HTML с XML ...

Вы можете использовать что-то вроде HTML Agility Pack для анализа HTML-кода из управляемого кода, будь то в вашем пакете SSIS или в виде развернутой функции SQLCLR.

+0

Он не пытается разбирать HTML, он лишает HTML-теги из данных столбца. Вы попробовали функцию? Он работает нормально. – EkoostikMartin

+0

Функция работает отлично, если ваши html-теги хорошо сформированы. Если в вашей колонке есть данные, такие как

Training should consist of:
1. Written material
2. Live meetings
3. 1x1 where needed
4. Pod Casts (moved to new project)
5. Short video presentations to be loaded to Ed Services for field consumption (moved to new project)
 
. Затем он не говорит о том, что строка xml parsing 1: символ 46, хорошо сформированная проверка: необъявленный объект ... Любая помощь? – Nemo

+0

HTML ** не ** XML. * Хорошо сформированный * HTML не может быть проанализирован как XML. Используйте парсер HTML. –

1

Я нашел этот ответ на SQLServerCentral.com. Поскольку это iTVF (Inline Table Valued Function), она работает быстрее, чем функция, которую вы используете прямо сейчас. Примерно в два раза быстрее, по сути. Ref: http://www.sqlservercentral.com/Forums/FindPost1198135.aspx

CREATE FUNCTION dbo.StripHtmlTags2 
     (@HtmlText XML) 
RETURNS TABLE 
    AS 
RETURN 
(
SELECT 
    @HtmlText.value('(.)[1]', 'nvarchar(max)') AS result 
) 
Смежные вопросы