WEB개발

ASP에서 텍스트파일 MSSQL DB에 입력하기

스쿠터로세계일주 2010. 6. 14. 12:20

텍스트 형식의 파일을 가지고 디비에 입력하는 방법

 

<%

'텍스트 파일의 크기가 다르기 때문에 만약에 대비해서 스크립트 타임아웃을 크게 주도록 하겠다.
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

 

이런 형식으로 진행되어 있는 텍스트 파일이다.