Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 디스패처서블릿
- getChannel()
- spring
- 교육법
- XWPF
- 함수
- 홈스쿨링
- MSSQL
- 앵커멤버
- TRANCOUNT
- 재귀멤버
- 배치
- dm_exec_requests
- java
- 자바
- transferTo
- SQLSTATE=42705
- ERROR_MESSAGE
- HWPF
- 프론트컨트롤러
- git
- 요약
- renameTo
- SQL
- 진경혜
- 스프링
- 튜닝
- 요청매핑
- 아이
- XACT_STATE
Archives
- Today
- Total
필기노트
MSSQL 저장 프로시저를 통한 FTP 서버와 파일 전송 본문
반응형
1. 파일 보내기
-- =============================================
-- Author: whk
-- Create date: 2022.12.03
-- Description: MSSQL 저장 프로시저를 통한 FTP 서버로 파일 보내기
-- Test: EXEC up_FtpPutFile '111.111.111.111', '11', '1111', '1111', '1:\1111\1111.txt'
-- =============================================
CREATE PROCEDURE dbo.up_FtpPutFile
@ftp_server AS VARCHAR(255),
@ftp_port AS VARCHAR(255),
@ftp_user AS VARCHAR(255),
@ftp_pwd AS VARCHAR(255),
@file_to_push AS VARCHAR(255)
AS
BEGIN
/************************************************************************
* Procedure 환경설정
************************************************************************/
SET NOCOUNT ON;
SET LOCK_TIMEOUT 10000;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET XACT_ABORT ON;
/************************************************************************
* 사용자 변수 선언
************************************************************************/
DECLARE @cmd AS VARCHAR(1000)
DECLARE @ftpType AS VARCHAR(255) = 'ascii'
DECLARE @ftp_cmd_text AS VARCHAR(255) = '1:\1111\1111\1111.txt'
-- deal with special characters for echo commands
SET @ftp_server = REPLACE(REPLACE(REPLACE(@ftp_server, '|', '^|'), '<', '^<'), '>', '^>')
SET @ftp_user = REPLACE(REPLACE(REPLACE(@ftp_user, '|', '^|'), '<', '^<'), '>', '^>')
SET @ftp_pwd = REPLACE(REPLACE(REPLACE(@ftp_pwd, '|', '^|'), '<', '^<'), '>', '^>')
SET @file_to_push = REPLACE(REPLACE(REPLACE(@file_to_push, '|', '^|'), '<', '^<'), '>', '^>')
/************************************************************************
* 업무처리
************************************************************************/
SET @cmd = 'echo open ' + @ftp_server + ' ' + @ftp_port + '> ' + @ftp_cmd_text
PRINT @cmd
EXEC master..xp_cmdshell @cmd
SET @cmd = 'echo ' + @ftp_user + '>> ' + @ftp_cmd_text
PRINT @cmd
EXEC master..xp_cmdshell @cmd
SET @cmd = 'echo ' + @ftp_pwd + '>> ' + @ftp_cmd_text
PRINT @cmd
EXEC master..xp_cmdshell @cmd
SET @cmd = 'echo ' + @ftpType + '>> ' + @ftp_cmd_text
PRINT @cmd
EXEC master..xp_cmdshell @cmd
SET @cmd = 'echo put ' + @file_to_push + '>> ' + @ftp_cmd_text
PRINT @cmd
EXEC master..xp_cmdshell @cmd
SET @cmd = 'echo quit >> ' + @ftp_cmd_text
PRINT @cmd
EXEC master..xp_cmdshell @cmd
SET @cmd = 'ftp -s:' + @ftp_cmd_text
PRINT @cmd
EXEC master.dbo.xp_cmdshell @cmd
END
2. 파일 받기
-- =============================================
-- Author: whk
-- Create date: 2022.12.03
-- Description: MSSQL 저장 프로시저를 통한 FTP 서버로 파일 받기
-- Test: EXEC up_FtpGetFile '111.111.111.111', '11', '1111', '1111', '', '1111.txt', '1:\1111\', '1111.txt'
-- =============================================
CREATE PROCEDURE dbo.up_FtpGetFile
@ftp_server AS VARCHAR(255),
@ftp_port AS VARCHAR(255),
@ftp_user AS VARCHAR(255),
@ftp_pwd AS VARCHAR(255),
@ftp_file_path AS VARCHAR(255), -- 받아올 파일의 위치
@ftp_file_name AS VARCHAR(255), -- 받아올 파일의 이름
@local_file_path AS VARCHAR(255), -- 파일을 저장할 위치
@local_file_name AS VARCHAR(255) -- 파일을 저장할 이름
AS
BEGIN
/************************************************************************
* Procedure 환경설정
************************************************************************/
SET NOCOUNT ON;
SET LOCK_TIMEOUT 10000;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET XACT_ABORT ON;
/************************************************************************
* 사용자 변수 선언
************************************************************************/
DECLARE @cmd AS VARCHAR(1000)
DECLARE @ftp_cmd_text AS VARCHAR(255) = '1:\1111\1111\1111.txt'
-- deal with special characters for echo commands
SET @ftp_server = REPLACE(REPLACE(REPLACE(@ftp_server, '|', '^|'), '<', '^<'), '>', '^>')
SET @ftp_user = REPLACE(REPLACE(REPLACE(@ftp_user, '|', '^|'), '<', '^<'), '>', '^>')
SET @ftp_pwd = REPLACE(REPLACE(REPLACE(@ftp_pwd, '|', '^|'), '<', '^<'), '>', '^>')
SET @ftp_file_path = REPLACE(REPLACE(REPLACE(@ftp_file_path, '|', '^|'), '<', '^<'), '>', '^>')
SET @local_file_path = REPLACE(REPLACE(REPLACE(@local_file_path, '|', '^|'), '<', '^<'), '>', '^>')
/************************************************************************
* 업무처리
************************************************************************/
SET @cmd = 'echo open ' + @ftp_server + ' ' + @ftp_port + '> ' + @ftp_cmd_text
PRINT @cmd
EXEC master..xp_cmdshell @cmd
SET @cmd = 'echo ' + @ftp_user + '>> ' + @ftp_cmd_text
PRINT @cmd
EXEC master..xp_cmdshell @cmd
SET @cmd = 'echo ' + @ftp_pwd + '>> ' + @ftp_cmd_text
PRINT @cmd
EXEC master..xp_cmdshell @cmd
SET @cmd = 'echo get ' + @ftp_file_path + @ftp_file_name + ' ' + @local_file_path + @local_file_name + '>> ' + @ftp_cmd_text
PRINT @cmd
EXEC master..xp_cmdshell @cmd
SET @cmd = 'echo quit >> ' + @ftp_cmd_text
PRINT @cmd
EXEC master..xp_cmdshell @cmd
SET @cmd = 'ftp -s:' + @ftp_cmd_text
PRINT @cmd
EXEC master.dbo.xp_cmdshell @cmd
END
3. FTP 명령어
1) echo : 콘솔에 메시지를 출력해줍니다.
2) echo Hello World! > hello.txt : 텍스트 파일이 없다면 생성한후 'echo' 명령어를 사용해서 출력한 결과를 저장
3) echo Hello World! >> hello.txt : 텍스트 파일이 존재한다면 기존 저장된 파일의 밑에 라인에 저장한다.
4) open : 호스트 이름이나 IP주소를 사용하여 접속한다.
5) put : 자신의 시스템에 있는 파일을 ftp 서버로 전송한다.
6) get : ftp 서버로부터 파일을 전송받는다.
7) ascii : ASCII 형태로 파일을 주고 받는다.
8) quit : ftp 사용을 그만하고 셀 상태로 돌아간다.
9) -s:filename : FTP 명령이 들어 있는 텍스트 파일을 실행한다.
참고
반응형
'Database' 카테고리의 다른 글
MSSQL 임시테이블 간단하게 생성하는 방법 INTO (0) | 2022.12.03 |
---|---|
SQL Sever 저장 프로시저, 함수 템플릿 생성하는 방법 (0) | 2022.12.03 |
MSSQL SQL Server DB서버 구축 및 SSMS 18 설치 (0) | 2022.11.29 |
Window FTP 서버를 구축하는 방법 (0) | 2022.11.29 |
MSSQL 데이터 가져오기, 내보내기(BCP, xp_cmdshell, BULK INSERT) (0) | 2022.11.27 |
Comments