인터넷 xml rss 피드 mssql db 저장 방법은 검색엔진 등록을 위해 사이트 최근게시물 등의 정보를 구글, 네이버, 다음 등 검색포탈에 등록을을 하기위해 RSS feed를 제공하는데 dbd에서 xml 변환함수를 활용해 db화 시켜 저장합니다.
인터넷 xml rss 피드 mssql db 저장 방법
저장 프로시저는 2개(httpGET,LastBolgPosts)로 존재하며, 둘다 같은 DB에서 작성되어야합니다.
CREATE PROCEDURE [dbo].[httpGET]
(
@url NVARCHAR(4000),
@ResponseText NVARCHAR(MAX) OUTPUT
)
AS
BEGIN
BEGIN TRY
DECLARE @Object as Int;
EXEC sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
EXEC sp_OAMethod @Object, 'open', NULL, 'GET', @url,'false';
EXEC sp_OAMethod @Object, 'send', null;
DECLARE @TABLEVAR TABLE (responseXml VARCHAR(MAX))
INSERT INTO @TABLEVAR
EXEC sp_OAGetProperty @Object, 'responseText';
SET @ResponseText = '';
SELECT @ResponseText = responseXml FROM @TABLEVAR
END TRY
BEGIN CATCH
print 'Exception in httpGET';
END CATCH
Exec sp_OADestroy @Object;
END
GO
CREATE PROCEDURE [dbo].[LatestBlogPosts]
(
@url NVARCHAR(4000)
)
AS
BEGIN
BEGIN TRY
DECLARE @ResponseText as NVARCHAR(MAX) = '';
EXEC [dbo].[httpGET] @url = @url, @ResponseText = @ResponseText OUTPUT;
DECLARE @xml XML = cast(REPLACE(@ResponseText, 'encoding="UTF-8"', '') as xml);
SELECT x.xmlNode.value('(title)[1]', 'varchar(400)') as BlogTitle,
x.xmlNode.value('(link)[1]', 'varchar(400)') as BlogUrl,
x.xmlNode.value('(pubDate)[1]', 'varchar(400)') as BlogDate,
x.xmlNode.value('(description)[1]', 'varchar(400)') as BlogDescription
FROM @xml.nodes('/rss/channel/item') x(xmlNode)
END TRY
BEGIN CATCH
print 'Exception';
END CATCH
END
GO
EXEC [dbo].[LatestBlogPosts] @url = 'https://stevestedman.com/feed/';
이제 사이트나 게시판 블로그등 rss, xml, feed를 제공하는 사이트를 db로 바로 저장할수있습니다.