-- STuDy --/데이터 베이스

[MSSQL] 파일 내보내기

sshyun800 2014. 5. 22. 20:43


 

테이블을 파일로 떨구기

 

참조블로그

http://blog.naver.com/PostView.nhn?blogId=shade77&logNo=60214516326

http://www.joshua95.net/355

http://blog.daum.net/sommer2k/41


BCP 설명

https://msdn.microsoft.com/ko-kr/library/ms162802.aspx

(비)XML서식 설명

https://msdn.microsoft.com/ko-kr/library/ms191479.aspx

네이티브형식 및 문자형식 등 가져오기 및 내보내기

https://msdn.microsoft.com/ko-kr/library/ms191232.aspx

BCP 사용 데이터 형식들 확인

https://msdn.microsoft.com/ko-kr/library/ms189110.aspx

BCP 설명

http://onesixx.tistory.com/959

XML서식 등록, 수정 방법

http://madhuottapalam.blogspot.kr/2008/08/creating-files-from-images-stored-in.html 

 





-- 1. xp_cmdshell 활성화 - 쿼리문 필요할때만 실행

exec master.dbo.sp_configure 'show advanced options', 1
go
reconfigure
go
exec master.dbo.sp_configure 'xp_cmdshell', 1
go
reconfigure
go

 

--2. CMD

- sqlcmd

@echo off
sqlcmd -S10.100.20.5 -Usa -Ppassword_1 -drptm_201312 -Q"select * from rptm_201312.dbo.report_send_file_20131229" > C:\20131229.csv

 

- bcp- 마지막에 콤마 찍을 것

@echo off
bcp "select * from rptm_201312.dbo.report_send_file_20131229" queryout C:\20131229.csv -T -c -t,

 

- zip file 이 디비에 넣어져 있는데 밖으로 꺼낼 방법 찾음

  다른사람이 만든 BCP 명령 - 엔터 - 0 - 엔터 - 엔터 - n 선택 하여 파일 추출 방법은 있음

  (예상 참조 : http://stackoverflow.com/questions/7597321/export-image-column-from-sql-server-2000-using-bcp)

C:\>bcp "select log_file_data from ewv6_logm_201504.dbo.log_date_fc where log_time = '2015041813' and log_engine_index =1" queryout "c:\00012015041813li.zip" -T

bcp명령의 인수를 이용한 여러방법을 시도하였으나 zip file을 열지 못함

XML서식을 이용한 파일 출력을 할수 있을 것 같음..

zip파일이므로 비XML서식파일로 검색검색~~

***** 결과 *************************

XML서식을 만듬(ew_cc_queryout.fmt)


out_log.fmt


저장된 서식을 이용한 zip file 추출




20160109 추가사항

zip 파일이 이미지 형태로 DBMS에 저장되어 있음 

bcp명령을 통한 이미지 출력

1.bcp 명령을 통하여 fmt 파일을 만듬

> bcp ewv7s_logm_201601.dbo.log_date_fc format nul -T -n -f c:\00\out_log.fmt

2. fmt 파일 수정


out_log_원본.fmt


out_log_수정본.fmt

이미지 부분만 남기고 삭제 후 파일 내용 수정


3. 수정본 fmt 파일을 이용한 zip 파일 출력

> bcp "select log_file_data from ewv7s_logm_201601.dbo.log_date_fc where log_time='201601040900'" queryout C:\00\log_out_file\201601040900.zip -T -fC:\00\out_log.fmt






내보내기

cmd

>bcp Table_Name out File_Name -c -S Server_Name -U User_Name -P Password

>bcp policy.dbo.rule_block out c:\block.csv -c -S100.0.0.100 -Usa -Ppassword_1


가져오기

cmd

>bcp Table_Name in File_Name -T -c -S Server_Name -U User_Name -P Password

>bcp policy.dbo.rule_block in c:\block.csv -T -c -S10.0.0.200 -Usa -Ppassword_1