Q&A

  • 인터베이스 5.x에서 만든 gdb를 6.01에서 불러올려면은요?
인터베이스 5.x에서 만든 gdb를 6.01에서 불러올려면 어떻게 합니까?

SQLDialect을 1로 해도 구조가 다르다는 에러가 나네요.. 해결 방법이 없을까요?

2  COMMENTS
  • Profile
    델피언 2001.09.06 23:39
    kheart wrote:

    > 인터베이스 5.x에서 만든 gdb를 6.01에서 불러올려면 어떻게 합니까?

    > SQLDialect을 1로 해도 구조가 다르다는 에러가 나네요.. 해결 방법이 없을까요?



    --------------------------------------------------------------------------



    인터베이스 6.0 과 이전버전에서 호환이 되지 않는 일부 자료형이 추가되었습니다.



    6.0이전의 Date형은 타임스탬프 형이지만 6.0부터는 데이트형,타임형,타임스탬프형

    으로 구분이 되었습니다. 글구 수치형 자료에도 많은 변화가 있습니다.

    자세한 내용은 인터넷에서 찾아 보세요..(인터베이스 릴리즈 노트(PDF형식 문서)에 보면

    잘 나와 있습니다...)



    --------------------------------------------------------------------------



    6.0은 이전버젼과의 호환을 위해서 다이얼랙(Dialect) 이라는 기능을 두었습니다.



    현재의 디비가 5.X이라면 다이얼랙 1과 호환되며 새로운 6.0 디비는 다이얼랙 3을 기본으로



    합니다.



    위에서 잘 말했지만 .. 6.0으로의 마이그레이션을 위해서...



    6.0으로 데이터베이스를 생성합니다. 글구 다이얼랙을 1로 변경합니다.



    Delphi 메뉴에 보면 데이터 펌프(DataPump)라는 프로그램이 있습니다.

    이것을 사용하면 5.0 자료를 6.0으로 UpSizing 할 수 있습니다.



    그런데 유의 할 것은 데이트형을 사용하고 있다면 6.0으로 업사이징

    (소스 및 타겟의 알리아스를 BDE ADMINISTRATOR서 추가합니다)하면

    이 데이터타입이 타임스탬프로 변경이 됩니다.



    여기서 다시 다이얼랙을 3으로 변경합니다. SQL문으로 나 데이터 베이스

    속성창에서 변경해도 됩니다.



    그리고나서 현재 자료형이 변경된것을 알맞은 자료형으로 변경 합니다.

    ALTER TABLE TABLE_NAME

    ALTER COLUMN WRITE_DATE TYPE DATE;



    위문장은 WRITE_DATE가 타임스탬프인 경우 데이트형으로 변경하는 문구입니다.



    기타 수치형에 관해서는 인터베이스6.0 릴리즈 노트나 인터베이스 관련 싸이트서



    찾아보세요....



    ------------------<< 글구요... 오늘 테스트 하다가 발견한거 한가지...>>-----------



    정말 이해가 되지 않는 부분인데...



    저는 지금 파라독스 7.0으로 만드디비를 InterBase 6.0으로 마이그레이션 하고 있는데



    웃긴게... IBConsole에서 SQL Dialect 1의 DataBase를 생성하고서 DataPump로



    Upsizing 하고서 IBConsole에서 다시 데이터베이스 다이얼랙을 3을 변경하고서



    ALTER TABLE 문으로 타임 스탬프로된 데이터 타입을 데이트형으로 변경을 했는데...



    웃긴것이.. 것으로 보기엔 데이트형으로 변경 되었는데... 실제로 이것을 캐스팅하려면



    에러게 납니다. ...CAST(WRITE_DATE AS CHAR(10)) -> 현재 데이트형을 문자형 10자로



    변경하는데... 변환연산 예외가 계속 발생하는거예요.... 왜 글까....



    이유는 바로 ALTER TABLE 테이블명 ALTER COLUMN 컬럼명 TYPE 새로운타입..



    에서 이것이 형태는 TIMESTAMP->DATE으로 변경을 하지만 실제의 내용은 TIMESTAMP입니



    다... 이렇게 확인해보면.. SELECT CAST(WRITE_DATE AS CHAR(100)) FROM VEHICLES_BOAD;



    하면 타임스탬프 자료가 그대로 나옵니다.



    그래서 이것을 UPDATE VEHICLES_BOARD SET WRITE_DATE = CAST(WRITE_DATE AS DATE)



    로 모든 WRITE_DATE를 업데이트 합니다... 그러면 만사 오우케이...



    ............................................



    계속 새로운것을 발견하면 계속 올리것슴다...



  • Profile
    김종언 2001.08.10 18:22
    DataDump라는게 있습니다....



    그것을 사용하면..... Data를 원하는 구조로 변경할수 있습니다.....







    kheart wrote:

    > 인터베이스 5.x에서 만든 gdb를 6.01에서 불러올려면 어떻게 합니까?

    > SQLDialect을 1로 해도 구조가 다르다는 에러가 나네요.. 해결 방법이 없을까요?