Contents
소개
이 가이드는 DentalDB 데이터를 SQLite 데이터베이스에서 MySQL/MariaDB 또는 SQL Server(MS SQL이라고도 함)로 마이그레이션하는 방법을 다룹니다.
SQLite 데이터베이스에서 MySQL/MariaDB 및 다른 데이터베이스 엔진으로 데이터를 마이그레이션하기 위해 사용할 수 있는 무료/상용 도구가 많습니다.
짧은 경험에 따르면, 상용 도구인 ESF Database Migration Toolkit이 SQLite 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 버전은 호환되지 않을 수 있음).
작업 방법
- 데이터 손실을 방지하기 위해, DentalDB_V3.sqlite 파일(기본 위치: c:\CAD-Data, 리셀러 설정에 따라 달라질 수 있음)의 사본을 만들어 SQLite 데이터베이스를 백업하십시오.
- 대상 데이터베이스(이동하려고 하는 DB)에 데이터베이스 스키마를 생성하십시오:
- 스키마 이름, 사용자, 비밀번호를 확인해 두십시오. 예시에서 스키마 이름은 dentaldb, 사용자는 test, 비밀번호는 somepass입니다.
- 데이터베이스 사용자에게 올바른 권한이 부여되었는지 확인하십시오. 자세한 내용은 해당 데이터베이스 문서를 참조하세요.
- DentalDB\config 폴더에 settings-db.xml 파일이 없으면 새로 만드십시오.
- settings-db.xml 파일을 다음과 같이 편집하십시오:
- 이미 SQLSettings 태그가 있으면, 아래 예시로 교체하십시오.
- SQLSettings 태그가 없다면, 아래 예시를 참고하여 추가하십시오.
- 명령 프롬프트를 열고 DentalDB를 /CreateDatabase 인수를 사용하여 실행하십시오.
- 참고: 필요한 테이블이 생성되면 DentalDB 창은 열리지 않고 애플리케이션은 종료됩니다.
- 필요하다면, 여기에 설명된 대로 데이터베이스의 문자 인코딩을 조정하십시오.
- 선택한 마이그레이션 도구를 사용하여, 원본으로 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)
위의 마이그레이션 안내는 데이터 손실이나 유효성에 대한 보증 없이 제공됩니다. 따라서 이 단계를 진행할 때 발생하는 모든 위험은 사용자 본인에게 책임이 있습니다.






