DentalDB SQLite 마이그레이션

소개

이 가이드는 DentalDB 데이터를 SQLite 데이터베이스에서 MySQL/MariaDB 또는 SQL Server(MS SQL이라고도 함)로 마이그레이션하는 방법을 다룹니다.

SQLite 데이터베이스에서 MySQL/MariaDB 및 다른 데이터베이스 엔진으로 데이터를 마이그레이션하기 위해 사용할 수 있는 무료/상용 도구가 많습니다.

짧은 경험에 따르면, 상용 도구인 ESF Database Migration ToolkitSQLite Migration And Sync보다 성능 면에서 더 나은 결과를 제공했습니다.

사전 준비사항

  • XML 파일 편집에 대한 기본 지식
  • 데이터베이스 관리에 대한 지식
  • SQL Server를 사용하는 경우, 최소 DentalDB 2.4 Plovdiv 또는 그 이상의 버전이 필요합니다. 혹은 2.3 Matera DentalDB hotfix(Matera2.3 2019-10-02) 버전도 가능합니다.
  • 3.2 Elefsina 이전 버전의 DentalDB는 MariaDB 서버 버전 10.6.x까지만 지원합니다(이후 MariaDB 버전은 호환되지 않을 수 있음).

작업 방법

  1. 데이터 손실을 방지하기 위해, DentalDB_V3.sqlite 파일(기본 위치: c:\CAD-Data, 리셀러 설정에 따라 달라질 수 있음)의 사본을 만들어 SQLite 데이터베이스를 백업하십시오.
  2. 대상 데이터베이스(이동하려고 하는 DB)에 데이터베이스 스키마를 생성하십시오:
    1. 스키마 이름, 사용자, 비밀번호를 확인해 두십시오. 예시에서 스키마 이름은 dentaldb, 사용자는 test, 비밀번호는 somepass입니다.
    2. 데이터베이스 사용자에게 올바른 권한이 부여되었는지 확인하십시오. 자세한 내용은 해당 데이터베이스 문서를 참조하세요.
  3. DentalDB\config 폴더에 settings-db.xml 파일이 없으면 새로 만드십시오.
  4. settings-db.xml 파일을 다음과 같이 편집하십시오:
    1. 이미 SQLSettings 태그가 있으면, 아래 예시로 교체하십시오.
    2. SQLSettings 태그가 없다면, 아래 예시를 참고하여 추가하십시오.
  5. 명령 프롬프트를 열고 DentalDB를 /CreateDatabase 인수를 사용하여 실행하십시오.
    1. 참고: 필요한 테이블이 생성되면 DentalDB 창은 열리지 않고 애플리케이션은 종료됩니다.
  6. 필요하다면, 여기에 설명된 대로 데이터베이스의 문자 인코딩을 조정하십시오.
  7. 선택한 마이그레이션 도구를 사용하여, 원본으로 SQLite 파일을 설정하고 위에서 구성한 데이터베이스를 대상으로 하여 데이터를 이관하십시오.

MySQL/MariaDB 설정 예시

<SQLSettings> <ConnectionString>Server=localhost;Database=dentaldb;User ID=test;Password=somepass</ConnectionString> <SQLDialect>NHibernate.Dialect.MySQLDialect</SQLDialect> <DriverClass>NHibernate.Driver.MySqlDataDriver</DriverClass> </SQLSettings> ```

SQL Server 설정 예시

SQL Server 인증을 통한 연결

권장 프로세스

<SQLSettings>
<ConnectionString>server=MY_DENTAL_SERVER_PC_NAME\SQLEXPRESS01; database=dentaldb;user=test;pwd=somepass</ConnectionString>
<SQLDialect>NHibernate.Dialect.MsSql2008Dialect</SQLDialect>
<DriverClass>NHibernate.Driver.SqlClientDriver</DriverClass>
</SQLSettings>

Windows 인증을 통한 연결

<SQLSettings>
<ConnectionString>server=MY_DENTAL_SERVER_PC_NAME\SQLEXPRESS01; database=dentaldb;Integrated Security=SSPI;</ConnectionString>
<SQLDialect>NHibernate.Dialect.MsSql2008Dialect</SQLDialect>
<DriverClass>NHibernate.Driver.SqlClientDriver</DriverClass>
</SQLSettings>

MariaDB/MySQL에서 올바른 문자 인코딩 설정하기

해당 데이터베이스의 문자 세트는 utf8mb4이어야 합니다. 그렇지 않으면 특정 특수 문자가 포함된 케이스(예: Notes 필드)가 저장되지 않을 수 있습니다. 기본 정렬(collation)이 이미 올바르게 설정되어 있지 않다면, 다음 SQL 명령을 통해 각 데이터베이스의 문자 세트를 설정하십시오: ALTER DATABASE dentaldb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

이때 dentaldb는 DentalDB 소프트웨어에서 사용할 데이터베이스 이름입니다.

문제 해결: 처음에 문자 세트를 올바르게 설정하지 않은 경우, 이미 들어간 테이블에 대해서도 utf8mb4로 변경할 수 있습니다:

ALTER TABLE dentaldb.CustomWorkDefinition CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.DependentOnNumericToothWorkParameters CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.DependentToothWorkParameters CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.NumericToothWorkParameter CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.TextualToothWorkParameter CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.ToothWork CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.ToothWorkParameters CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.Treatment CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.TreatmentValuedCustomInfo CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.TreatmentValuedParameters CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.ValuedMaterialParameters CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.WorkParamsInfoDentalShare CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.WorkParamsInfoLocal CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.WorkParamsInfoLocalImport CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.client_allowedImportedIds CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.clients CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.databaseInformation CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.laboratories CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.patients CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE dentaldb.technicians CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

위에서 dentaldb는 DentalDB 소프트웨어에서 사용하는 데이터베이스 이름입니다. 이는 초기 설정에서 문자를 잘못 지정한 채 데이터를 넣었을 때, 이후에 복구용으로만 수행하면 됩니다.

면책 조항 (DISCLAIMER)

위의 마이그레이션 안내는 데이터 손실이나 유효성에 대한 보증 없이 제공됩니다. 따라서 이 단계를 진행할 때 발생하는 모든 위험은 사용자 본인에게 책임이 있습니다.