1

SSIS と [SharePointListAdapters][1] [1]: http://sqlsrvintegrationsrv.codeplex.com/releases を使用して、SharePoint 2010 リストからデータをインポートし、SQL Server 2008 テーブルに配置しました。約 500 行のデータがあります。ここでの課題は、データを適切に解析することです。html タグで囲まれた列がいくつかあります。

たとえば、Column Project Desc には Project Desc のようなデータがあります。

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

グーグルで、以下の機能を見つけました。期待どおりに動作します。私の質問は、この関数を編集して Project Desc という列名をパラメーターとして取得し、その特定の列のすべてのデータで html タグが破棄されるようにする方法です。

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>') 
4

3 に答える 3

1

関数を作成したら、それをテーブル内の通常のフィールドであるかのように使用し、ソース テーブルとフィールドをパラメーターが配置される場所に配置します...

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

(関数を編集するのではなく、テーブルからデータを提供するだけです。)

于 2012-06-22T14:30:34.690 に答える
1

SQLServerCentral.com でこの回答を見つけました。これは iTVF (Inline Table Valued Function) であるため、現在使用している関数よりも高速に動作します。実際のところ、約2倍の速さです。参照: 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
)
于 2012-06-25T04:19:59.570 に答える
1

SQL と T-SQL には、HTML を解析する手段がありません。HTML と XML を混同しないでください...

HTML Agility Packのようなものを使用して、マネージ コードから HTML を解析できます。これは、SSIS パッケージ内であっても、SQLCLR 展開関数としてであってもかまいません。

于 2012-06-22T14:31:41.827 に答える