728x90

1. BCP 유틸리티 이용

DECLARE @Query VARCHAR(1000)
DECLARE @FileName VARCHAR(1000)
DECLARE @Command VARCHAR(2000)

SET @Query = 'SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname'
SET @FileName = 'C:\Authors.txt'
SET @Command = 'BCP "' + @Query + '" queryout ' + @FileName + ' -c '
EXEC master..xp_cmdshell @Command


아무 에러가 안생겼다면 C:\에 Authors.txt 이 생겼을것이다.. 물론 DB 서버에~~~

문제점 : 데이터중 케리지리턴 값이 들어가 있으면 파일 생성 실패가 떨어진다... ㅠ.ㅠ
[MSDN에서 bcp 유틸리티 / xp_cmdshell  로 검색하면 자세한 정보를 얻을 수 있다.]


2. OSQL 유틸리티 이용

DECLARE @Query VARCHAR(1000)
DECLARE @FileName VARCHAR(1000)
DECLARE @Command VARCHAR(2000)

SET @Query = 'SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname'
SET @FileName = 'C:\Authors.txt'
SET @Command = 'OSQL -E /Q "' + @Query + '" /o ' + @FileName+ ''
EXEC master..xp_cmdshell @Command


-- 3. OACreate 이용 (이놈 신기하네~~~)
DECLARE @FS INT
DECLARE @RC INT
DECLARE @FileID INT

DECLARE @Query VARCHAR(1000)
DECLARE @FileName VARCHAR(1000)

SET @FileName = 'C:\Authors.txt'

-- A. OLE개체 인스턴스 생성
EXEC @RC = sp_OACreate 'Scripting.FileSystemObject', @FS OUT
IF @RC <> 0
BEGIN
 PRINT 'Error:  Creating the file system object'
END
-- B. File Open
EXEC @RC = sp_OAMethod @FS, 'OpenTextFile' , @FileID OUT, @FileName, 8, 1
IF @RC <> 0
BEGIN
 PRINT 'Error:  Opening the specified text file'
END

-- C. Write
EXEC @RC = sp_OAMethod @FileID, 'WriteLine', Null, '테스트'
IF @RC <> 0
BEGIN
 PRINT 'Error:  Writing string data to file'
END

-- D.OLE 개체를 삭제
EXECUTE @RC = sp_OADestroy @FileID
EXECUTE @RC = sp_OADestroy @FS

1, 2번처럼 DB의 내용을 그대로 파일로 쓰는것은 아니고 지정한 텍스트를 파일로 만든다..

OACreate 를 이용하여 'Scripting.FileSystemObject'를 생성한다는게 너무 신기하지 않은가?? ㅋㅋㅋ

============================================================================================

특정 테이블의 데이타를 Row단위로 파일로 만들어야 했다..
BCP 유틸을 봤을때.. 너무 기뻤지만 (싸게 갈수 있겠구나 ㅋㅋ 라는 생각에.. )  기쁨도 잠시 ㅠ.ㅠ
케리지 리턴이 존재할 경우 파일로 만들수가 없었다...
"아니 대용량 데이타 Copy 해주는 명령어가.. 케리지 리턴이 있다고 Copy를 못해?? "
라고 생각 하시겠지만.. 프롬프트 상태에서는 BCP명령어만 주기 때문에 가능 하지만 현재는 Q/A에서 돌리기 때문에.. 한 라인으로 인식하지 못하고.. 에러가 나는게 아닐까?? 라는 생각을 해본다 ㅋㅋ(아님 말고 -_-;; 암턴 안된다.. )
2번 마찬가지 -_-;; 같은 이유로 할수 없었다...
3번을 봤을때.. 너무 기뻤다..
아니 sql에서 fso를써??? 이.럴.수.가 @.@ ~~~
MSDN에서 SP_OACreate로 검색하면... 많은 정보를 얻을수 있다..

[출처] [MSSQL] DB의 특정 자료를 파일로 만들기 |작성자 필립박

+ Recent posts