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의 특정 자료를 파일로 만들기 |작성자 필립박
'데이터베이스 > SQL Server' 카테고리의 다른 글
DB별 제약 조건을 쿼리로 뽑기 (0) | 2008.04.28 |
---|---|
다중 입력을 Open xml로 처리하여 보자 (0) | 2008.04.28 |
SQL문으로 이벤트 로그에 메세지 남기기 (0) | 2008.04.28 |
Microsoft SQL Server 2005의 XML 지원 (0) | 2008.04.28 |
SQL Server 2005의 XQuery 소개 (0) | 2008.04.28 |