Q&A

  • csv파일을 DB로 옮기는 방법(필드수가 40개정도인 경우)
  여러가자 csv파일을 db로 옮기는 방법들이 소개되어 있더군요.

  TStringList를 이용하여 처리하는 방법을 보고 했는데 항목이 33개를 넘어서

니깐 범위를 초과했다는 오류메시지가 나오더군요.

항목이 33개 이내인 경우 TStringList로 처리가 가능한데 33개 이상인 경우 처

리 루틴을 좀 올려주세요.
1  COMMENTS
  • Profile
    정종필 2003.07.18 19:36
    이 글은 님께서.. MS-SQL Server 를 사용하고 계시다는 전제로 참고하시기 바랍니다.
    님 같은 경우라면 bcp 같은 유틸리티를 이용하면 편할 듯 합니다. 속도도 무지 빠르구요..
    bcp.exe 는 C:Program FilesMicrosoft SQL Server80ToolsBinn  여기 들어 있을겁니다.
    걍.. 도스 커멘드에서 bcp 엔터 해 보면 사용법이 간단하게 나올 겁니다.
    간단한 예를 들어보면...
    (db name 이 TEST 이고 csv 파일 이름이 'aaa.txt' 라고 할때)

       bcp  TEST  in  aaa.txt  

    이렇게 해 주심.. 잘 안될겁니다. (되면 다행이지만..^^)
    맨 뒤에다가 format file 을 지정을 해줘야 하는데..
    -f 옵션 에다가 format file 명을 붙여서 적어주면 됩니다.
    (format file 명이 bbb.fmt 라고 하면..)

       bcp  TEST  in  aaa.txt  -fbbb.fmt

    요렇게 하심 됩니다.
    근데 여기서 파일 이름들은 가급적 full path 를 다 적어주는 것이
    정신건강에 좋을 듯 합니다.

    근데 마지막으로 format file 은  무엇이고 어떻게 만드느냐면..

    역시 도스커멘드에서

      bcp  TEST  out  ccc.txt

    이렇게 하시고 엔터를 치시면 뭐.. 많이 물어봅니다.
    신경쓸거 없이 걍.. 엔터만 좍 치고 넘어가세요..
    마지막 까지 엔터를 치셨다면  bcp.fmt 라는 파일이 만들어 질겁니다.

    이 파일을 열어보면.. 아래와 같이 되어 있을 겁니다.

    8.0
    3
    1    SQLCHAR    0     10       ""      1     name     Korean_Wansung_CI_AS
    2    SQLCHAR    0     15       ""      2     tel      Korean_Wansung_CI_AS
    3    SQLCHAR    0     40       ""      3     addr     Korean_Wansung_CI_AS

    여기서 수정 해 주실 것은..
    큰따옴표(떠블쿼테이션) 안에다가  컴마를 집어 넣는 겁니다.
    이게 바로 필드 구분자 입니다.  
    csv 파일은 보통 컴마(,) 로 필드가 구분되어 있으니까.. 말이죠..
    여기서는 필드가 3개 있으니까.. 1, 2 번 항목에서는 컴마(,) 를 집어 넣어주고
    마지막 3 번 항목에서는 'n'  즉, 개행문자를 넣어주면 됩니다.

    이렇게 해서.. bcp.fmt 파일을 맘에 드는 적당한 이름으로 바꾸어 주시고..
    위에 처럼 하시면.. 걍.. 수천 수만건이든.. 눈 깜짝할 사이에 db 에 들어가게 되죠..ㅋㅋㅋ

    물론 db 에 있는 걸 text 파일로 끄집어 낼 수도 있슴다.
    그럼.. 즐프하세요..^^