WEB개발

ASP 에서 EXCEL파일(xls)을 MSSQL DB에 입력하는 방법

스쿠터로세계일주 2010. 6. 30. 11:51

저번에 올렸던 텍스트 파일을 디비에 입력하는 방법 다음으로 엑셀파일을 입력하는 방법이다.

(참조: http://blog.daum.net/lexerj/18126204)

방법차이가 크지는 않다. 단지 데이터 타입이 다른것 뿐이니 말이다.

코드는 아래와 같다.

<%

'일단 서버의 타임아웃을 넉넉하게 줘야한다. 혹시 데이터가 많으면 헛고생일 수 있다.

하지만 엑셀타입의 경우에는 그럴 경우가 별로 없을 수도 있다. 그건 아래에서 설명하겠다.

server.ScriptTimeOut=120000

 

'디비연결부분 각자~

strConnect = "Provider=SQLOLEDB.1;data Source=000.000.000.00;Initial catalog=DBNAME;User ID=sa;Password=pass;"
Set Dbcon = Server.CreateObject("ADODB.Connection")
Dbcon.Open(strConnect)

 

'중요한 것은 쿼리문이다.

'미리 만들어놓은 테이블에(T_table) insert문을 만들어주는데 여기까지는 별차이가 없다.
SQL="insert T_table (ecn,title,comp)" 

'중요한건 아래부분이다.

'아래의 select 문은 엑셀파일에 관한 것이다. 즉 col1,col2,col3열은 엑셀의 첫번째줄에 있는 열제목인 것이다. 그리고 엑셀의 위치를 지정해주고(C:\test.xls), 엑셀의 sheet를 지정해준다(aa) 엑셀의 sheet는 엑셀 열면 하단에 있는 이름이다.


    & " select col1,col2,col3 from" 
    & " OpenRowSet('Microsoft.Jet.OLEDB.4.0', " 
    & " 'Excel 8.0;DataBase=C:\test.xls;;;',aa$) "

 

Response.Write SQL & "<hr>"
st = Timer
Set Rs = Dbcon.Execute(SQL)
Set Rs = Nothing
et = Timer

Set Rs = Dbcon.Execute("Select count(*) From T_table")
cnt = Rs(0)
Set Rs = Nothing
Dbcon.Close
Set Dbcon = Nothing

Response.Write "총데이타 : " & FormatNumber(cnt,0) & "<br>"
Response.Write "작업시간 : " & et - st

%>