DentalDB Migrazione da SQLite

Introduzione

Questa guida copre la migrazione dei dati di DentalDB dal database SQLite a MySQL/MariaDB o SQL Server (conosciuto anche come MS SQL).

Esistono molti strumenti gratuiti e commerciali che supportano la migrazione dei dati da database SQLite a MySQL/MariaDB e ad altri motori di database.

La nostra breve esperienza con questi strumenti ci ha mostrato che lo strumento commerciale ESF Database Migration Toolkit ha funzionato piuttosto bene e offre prestazioni migliori in questo ambito rispetto a SQLite Migration And Sync.

Prerequisiti

  • Conoscenza di base della modifica di file XML
  • Conoscenza dell’amministrazione di database
  • Per SQL Server, è richiesto DentalDB 2.4 Plovdiv o versioni successive; in alternativa, 2.3 Matera DentalDB hotfix (Matera2.3 2019-10-02).
  • Le versioni di DentalDB precedenti alla 3.2 Elefsina supportano solo MariaDB server fino alla versione 10.6.x (le versioni successive di MariaDB potrebbero non essere compatibili).

Istruzioni

  1. Per evitare la perdita di dati, creare un backup del database SQLite facendo una copia del file DentalDB_V3.sqlite (il percorso predefinito è c:\CAD-Data, ma potrebbe variare a seconda del vostro rivenditore).
  2. Creare uno schema di database nel database di destinazione:
    1. Annotare il nome dello schema, l’utente e la password. Nell’esempio seguente, il nome dello schema è dentaldb, l’utente è test e la password è somepass.
    2. Assicurarsi di concedere le autorizzazioni corrette all’utente del database. Per i dettagli, fare riferimento alla documentazione del database.
  3. Creare il file settings-db.xml nella cartella DentalDB\config se non è già presente.
  4. Modificare settings-db.xml come segue:
    1. Se il tag SQLSettings è già presente, sostituirlo con quello riportato di seguito.
    2. Se il tag SQLSettings è assente, aggiungerlo come nell’esempio seguente.
  5. Aprire un Prompt dei comandi ed eseguire DentalDB usando l’argomento /CreateDatabase
    1. Nota: la finestra di DentalDB non si aprirà e l’applicazione terminerà una volta create le tabelle necessarie.
  6. Se necessario, regolare la codifica del database come descritto qui
  7. Eseguire lo strumento di migrazione desiderato, utilizzando il file SQLite come sorgente e il database configurato sopra come destinazione.

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

Configurazione SQL Server

Connessione tramite autenticazione SQL Server

Recommended process

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

Connessione tramite autenticazione 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>

Chosing right character encoding for MariaDB/MySQL

Il set di caratteri per il rispettivo database dovrebbe essere utf8mb4. In caso contrario, le lavorazioni che includono determinati caratteri speciali (ad esempio nel campo Note) non verranno salvate correttamente. A meno che la collation di default non sia già impostata di conseguenza, è necessario impostare il set di caratteri appropriato per il rispettivo database, eseguendo il seguente comando SQL:

ALTER DATABASE dentaldb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Dove dentaldb è il nome del database che si sta utilizzando per il software DentalDB.

Risoluzione dei problemi: Nei casi in cui l’impostazione corretta del set di caratteri sia stata inizialmente omessa, è possibile convertire retroattivamente le tabelle esistenti in 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;

Dove dentaldb è il nome del database che si sta utilizzando per il software DentalDB. Si ricorda che ciò è necessario solo per recuperare un database che è stato riempito senza aver inizialmente impostato il set di caratteri corretto.

DISCLAIMER

Le istruzioni di migrazione sopra riportate sono fornite senza alcuna garanzia riguardo alla perdita di dati o alla validità. Pertanto, si procede a proprio rischio e pericolo.