텍스트 형식의 파일을 가지고 디비에 입력하는 방법
<%
'텍스트 파일의 크기가 다르기 때문에 만약에 대비해서 스크립트 타임아웃을 크게 주도록 하겠다.
server.ScriptTimeOut=1200000
'디비에 입력할 텍스트 파일의 위치
Dim strDocUrl : strDocUrl = "c:\web\1.txt"
'FSO세팅
Set fso = Server.CreateObject("Scripting.FileSystemObject")
'1번째줄부터 파일을 오픈한다
set obj_txt = fso.OpenTextFile(strDocUrl, 1)
'디비 연결..되도록 SA계정을 사용한다.
strConnect = "Provider=SQLOLEDB.1;data Source=000.000.000.000;Initial catalog=TEST;User ID=sa;Password=test;"
Set Dbcon = Server.CreateObject("ADODB.Connection")
Dbcon.Open(strConnect)
'반복문부분...여기에서 텍스트파일을 한줄씩 읽어서 한줄마다의 데이터를 디비에 입력한다.
텍스트의 끝까지 반복문 돌림.
Do While obj_txt.AtEndOfStream <> True
'::::::아래부분은 생각을 잘못해서 텍스트 중간에 빈줄이 있을경우 뛰어넘도록 넣었던 구문이지만 잘못됐다.
'왜냐하면 ReadLine은 액션을 취하고 다음줄로 포인터를 옮기므로 하나 더 들어가면 그만큼 건너뛰게 된다.
따라서 아래의 주석부분을 이용할 것이 아니라, 아래의 UBound(TempLineData)를 이용한다.
'If Len(Trim(obj_txt.ReadLine))>0 Then
'먼저 스플릿으로 데이터를 잘라내서 한줄마다의 데이터를 배열로 만든다.
"여기에서는 윗꺽쇠로 구분자를 만든 데이터이다.
TempLineData = split(obj_txt.ReadLine,"^")
'response.write UBound(TempLineData) &"<br>" 'ReadLine의 에러때문이 이 구문을 이용한다.
'배열로 반환한 값의 배열갯수가 0보다 작으면(-1) 그줄은 비어있다는 의미다.
'배열갯수가 0보다 크거나 같을 경우에만 데이터 입력작업을 해준다.
If UBound(TempLineData)>=0 Then
aa = cstr(trim(TempLineData(0)))
bb = cstr(trim(TempLineData(1)))
cc = cstr(trim(TempLineData(2)))
dd = cstr(trim(TempLineData(3)))
ee = cstr(trim(TempLineData(4)))
i = i + 1
SQL = "insert into TEST..test values ('"&aa&"','"&bb&"','"&cc&"','"&dd&"','"&ee&"')"
Dbcon.Execute(SQL)
End If
Loop
obj_txt.Close
set fso = nothing
set obj_txt = Nothing
Dbcon.Close
Set Dbcon = Nothing
response.write i&"개 작업 완료"
%>
1.txt의 모습은 이렇다.
0000^8888888^9999999^777777^55555
이런 형식으로 진행되어 있는 텍스트 파일이다.
'WEB개발' 카테고리의 다른 글
ASP 에서 EXCEL파일(xls)을 MSSQL DB에 입력하는 방법 (0) | 2010.06.30 |
---|---|
GEOIP의 CSV파일 이용한 국가별 접속자 구분하기 (0) | 2010.06.29 |
이미지에 마우스 올리고 내리고 할때 이미지의 스타일에 변화주기? (0) | 2009.12.30 |
자바스크립트 숫자체크하기 (0) | 2009.12.14 |
post 로 데이터 전송시 새창 띄위서 새창에 전송하는 방법 (0) | 2009.12.14 |