/*
- sp_readtextfile
SQL 서버 컴퓨터에 있는 텍스트 파일을 읽을 수 있도록 해 주며, 결과 집합으로서 그 내용을 반환하거나 출력 매개 변수에 저장한다.
*/
USE master;
GO
IF OBJECT_ID('sp_readtextfile') IS NOT NULL
    DROP PROC sp_readtextfile
GO
CREATE PROC sp_readtextfile
    @textfilename sysname,
    @contents varchar(8000) = 'Results Only' OUT
AS
SET NOCOUNT ON
IF (@textfilename = '/?')    RETURN -1

CREATE TABLE #lines (lno int identity, line varchar(max))

DECLARE @cmd varchar(8000), @crlf char(2)
SET @cmd = 'TYPE ' + @textfilename
SET @crlf = CHAR(13) + CHAR(10)

INSERT #lines (line)
EXEC master.dbo.xp_cmdshell @cmd     -- 요부분 xp_cmdshell을 사용하지 않고 넣는 방법 강구할 것

IF ISNULL(@contents, '') = 'Results Only'
    SELECT ISNULL(line, '') AS line
    FROM #lines
    ORDER BY lno
ELSE
    SELECT @contents = CASE lno WHEN 1 THEN ISNULL(RTRIM(line), '') + @crlf
                                    ELSE @contents + ISNULL(RTRIM(line), '') + @crlf END
    FROM #lines
    ORDER BY lno
   
DROP TABLE #lines
RETURN 0


EXEC sp_readtextfile 'E:\MS.txt';

DECLARE @txt VARCHAR(MAX)
EXEC sp_readtextfile 'E:\MS.txt', @txt OUT
SELECT @txt

+ Recent posts