Migration de DentalDB vers SQLite

Introduction

Ce guide traite de la migration des données de DentalDB depuis une base de données SQLite vers MySQL / MariaDB ou SQL Server (également connu sous le nom de MS SQL).

Il existe de nombreux outils gratuits et commerciaux permettant de migrer les données d’une base SQLite vers MySQL/MariaDB ou d’autres moteurs de base de données.

D’après notre brève expérience, l’outil commercial ESF Database Migration Toolkit donne de bons résultats et fonctionne mieux, dans ce domaine, que SQLite Migration And Sync.

Prérequis

  • Connaissances de base pour l’édition de fichiers XML
  • Connaissances en administration de bases de données
  • Pour SQL Server, DentalDB 2.4 Plovdiv ou version ultérieure est requis ; à défaut, utilisez le 2.3 Matera DentalDB hotfix (Matera 2.3 2019‑10‑02).
  • Les versions de DentalDB antérieures à 3.2 Elefsina ne prennent en charge MariaDB Server que jusqu’à la version 10.6.x (des versions ultérieures peuvent être incompatibles).

Instructions

  1. Afin d’éviter toute perte de données, créez une sauvegarde de la base SQLite en copiant le fichier DentalDB_V3.sqlite (l’emplacement par défaut est c:\CAD-Data, mais peut varier selon votre revendeur).
  2. Créez un schéma dans la base de données cible :
    1. Notez le nom du schéma, l’utilisateur et le mot de passe. Dans l’exemple ci-dessous : schéma = dentaldb, utilisateur = test, mot de passe = somepass.
    2. Accordez à cet utilisateur les droits nécessaires (voir la documentation de votre SGBD).
  3. Créez le fichier settings-db.xml dans DentalDB\config s’il n’existe pas déjà.
  4. Modifiez settings-db.xml comme suit :
    1. Si la balise SQLSettings existe, remplacez-la par celle ci-dessous.
    2. Si la balise SQLSettings est absente, ajoutez-la conformément à l’exemple ci-dessous.
  5. Ouvrez l’invite de commandes et exécutez DentalDB avec l’argument /CreateDatabase
    1. Remarque : la fenêtre de DentalDB ne s’ouvrira pas et l’application se terminera une fois les tables créées.
  6. Si nécessaire, ajustez l’encodage comme expliqué ici.
  7. Lancez l’outil de migration de votre choix en indiquant le fichier SQLite comme source et la base configurée ci-dessus comme cible.

Configuration 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>

Configuration SQL Server

Connexion via l’authentification SQL Server

Processus recommandé

<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>

Connexion via l’authentification 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>

Choisir le bon encodage des caractères pour MariaDB/MySQL

Le jeu de caractères de la base doit être utf8mb4. Dans le cas contraire, les cas contenant certains caractères spéciaux (par ex. dans le champ Notes) ne pourront pas être enregistrés. À moins que votre collation par défaut ne soit déjà définie en conséquence, appliquez le jeu de caractères approprié en exécutant :

ALTER DATABASE dentaldb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

dentaldb est le nom de la base utilisée par le logiciel DentalDB.

Dépannage : si le bon jeu de caractères n’a pas été défini au départ, vous pouvez convertir rétroactivement les tables existantes :


ALTER DATABASE dentaldb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

dentaldb est le nom de la base utilisée par le logiciel DentalDB.

Dépannage : si le bon jeu de caractères n’a pas été défini au départ, vous pouvez convertir rétroactivement les tables existantes :

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 est le nom de la base de données utilisée par le logiciel DentalDB. Pour rappel, cette opération n’est requise que pour restaurer une base qui a été remplie sans avoir défini correctement le jeu de caractères au préalable.

DISCLAIMER

Les instructions de migration ci-dessus sont fournies sans aucune garantie concernant la perte ou l’intégrité des données. Vous les appliquez donc à vos propres risques.