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
- 홈스쿨링
- dm_exec_requests
- java
- renameTo
- spring
- MSSQL
- 튜닝
- 재귀멤버
- XACT_STATE
- TRANCOUNT
- 자바
- 함수
- ERROR_MESSAGE
- 스프링
- SQLSTATE=42705
- 아이
- transferTo
- 프론트컨트롤러
- SQL
- 교육법
- git
- 디스패처서블릿
- 배치
- getChannel()
- XWPF
- 앵커멤버
- 요약
- HWPF
- 요청매핑
- 진경혜
Archives
- Today
- Total
필기노트
MSSQL 데이터 가져오기, 내보내기(BCP, xp_cmdshell, BULK INSERT) 본문
반응형
1. xp_cmdshell이란 MSSQL에서 운영체제 명령을 실행할 수 있도록하는 함수입니다.
다음쿼리를 이용해서 xp_cmdshell이 활성화 되어 있는지 확인할 수 있습니다.
SELECT * FROM sys.configurations WHERE name = 'xp_cmdshell'
만약, xp_cmdshell이 비활성화되어 있다면 다음과 같은 쿼리를 이용해서 활성화시킬 수 있습니다.
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO
2. BCP : 대량 복사 프로그램 유틸리티(bulk copy program utility, bcp) : bcp 유틸리티를 사용하여 많은 수의 새 행을 SQL Server 테이블로 가져오거나 테이블에서 데이터 파일로 데이터를 내보낼 수 있습니다.
DECLARE @SQL AS VARCHAR(255)
DECLARE @TSQL AS VARCHAR(255)
DECLARE @FileName AS VARCHAR(50) = 'NAME.txt'
DECLARE @result AS INT
SET @SQL = 'SELECT CUST_NM FROM whk_edu.dbo.TBL_CST WITH(NOLOCK) WHERE 1=1 '
SET @TSQL = 'BCP "' + @SQL + '" QUERYOUT "1:\1111\1111\' + @FileName + '" -b 1000 -c -T'
EXEC @result = xp_cmdshell @TSQL
IF (@result = 0)
PRINT 'Success'
ELSE
PRINT 'Failure'
- queryout : 쿼리에서 복사하며 쿼리에서 데이터를 대량 복사하는 경우에만 지정해야 합니다.
- -b : 가져온 데이터의 일괄 처리당 행 수를 지정
- -c : 문자 데이터 형식을 사용하여 작업을 수행
- -r"\n" : 행 종결자를 지정합니다. 기본값은 \n (줄 바꿈 문자)입니다.
- -t"\t" : 필드 종결자를 지정합니다. 기본값은 \t (탭 문자)입니다.
- -T : bcp 유틸리티가 통합 보안을 사용하는 트러스트된 연결을 통해 SQL Server 로 연결되도록 지정합니다. 네트워크 사용자의 보안 자격 증명, login_id및 password 는 필요하지 않습니다. -T 를 지정하지 않은 경우 성공적으로 로그인하려면 -U 와 -P 를 지정해야 합니다.
3. BULK INSERT : 데이터 파일을 SQL Server에서 사용자가 지정한 형식으로 데이터베이스 테이블이나 뷰로 가져옵니다.
DECLARE @SQL AS VARCHAR(255)
DECLARE @TableName AS VARCHAR(50) = 'TBL_CST'
DECLARE @LocalFilePath AS VARCHAR(255) = '1:\1111\1111\NAME.txt'
SET @SQL = 'BULK INSERT whk_edu.dbo.' + @TableName + ' FROM ''' + @LocalFilePath + ''' '
SET @SQL += 'WITH(FIRSTROW = 1, KEEPIDENTITY, DATAFILETYPE = ''CHAR'', FIELDTERMINATOR = '';'', ROWTERMINATOR = '''+CHAR(10)+''')'
EXEC (@SQL)
- DATAFILETYPE : char(기본값) 문자 형식
- FIRSTROW : 로드할 첫 번째 행의 번호를 지정
- KEEPIDENTITY : 가져온 데이터 파일의 ID 값이 ID 열에 사용되도록 지정
- FIELDTERMINATOR : char 및 widechar 데이터 파일에 사용할 필드 종결자를 지정
- ROWTERMINATOR : char 및 widechar 데이터 파일에 사용할 행 종결자를 지정
참고
반응형
'Database' 카테고리의 다른 글
MSSQL SQL Server DB서버 구축 및 SSMS 18 설치 (0) | 2022.11.29 |
---|---|
Window FTP 서버를 구축하는 방법 (0) | 2022.11.29 |
MSSQL 메일 보내는 방법(sp_send_dbmail) (0) | 2022.11.27 |
MSSQL PRINT를 사용해서 VARCHAR(MAX)를 모두 출력하는 방법 (0) | 2022.11.27 |
MSSQL 프로시져, 함수 조회 및 내용 검색하는 방법 (0) | 2022.11.25 |
Comments