연구개발/DBA
SQL 서버에서 텍스트파일 읽기
HEAD1TON
2011. 8. 22. 23:51
/*
- 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
- 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