我使用了SSIS和SharePointListAdapters 从我的SharePoint 2010列表导入数据并将其放入SQL Server 2008表。大约有500行数据。现在的挑战是适当地解析数据。我有几列在它们周围有html标签。
例如,Column Project Desc有类似的数据 项目描述
<div class="ExternalClass914BB5DA5CB142EB854C739EAACEE3BB">
<div>Import Data from SharePoint list to Database.
</div>
</div>
在Google上,我找到了下面的功能。它按预期工作。我的问题是如何编辑此函数以将名为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>')
答案 0 :(得分:1)
一旦你创建了这个函数,就可以像使用表中的普通字段一样使用它,并将源表和字段放在参数所在的位置......
SELECT
dbo.StripHTML( yourTable.yourColumn ) AS yourResults
FROM
yourTable
(您不需要编辑该功能,只需提供表格中的数据。)
答案 1 :(得分:1)
SQL和T-SQL无法解析HTML。不要将HTML与XML混淆......
您可以使用类似HTML Agility Pack的内容来解析托管代码中的HTML,无论是在SSIS包中还是作为SQLCLR部署的函数。
答案 2 :(得分:1)
我在SQLServerCentral.com上找到了这个答案。因为它是一个iTVF(内联表值函数),它比你现在使用的功能更快。事实上大约快两倍。参考: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
)