Índice
Introdução
Este guia aborda a migração de dados do DentalDB de uma base de dados SQLite para MySQL/MariaDB ou SQL Server (também conhecido como MS SQL).
Existem várias ferramentas comerciais gratuitas disponíveis que suportam a migração de dados de bases de dados SQLite para MySQL/MariaDB e outros motores de base de dados.
Na nossa curta experiência com estas ferramentas, o software comercial ESF Database Migration Toolkit apresentou um desempenho bastante satisfatório, superando neste aspeto o SQLite Migration And Sync.
Pré-requisitos
- Conhecimentos básicos de edição de ficheiros XML
- Conhecimento em administração de bases de dados
- Para SQL Server, é necessário o DentalDB 2.4 Plovdiv ou superior. Alternativamente, pode ser utilizada a correção 2.3 Matera DentalDB hotfix (Matera2.3 2019-10-02).
- Versões do DentalDB anteriores à 3.2 Elefsina apenas suportam MariaDB até à versão 10.6.x (versões posteriores podem não ser compatíveis).
Instruções
- Para evitar perda de dados, criar uma cópia de segurança da base de dados SQLite copiando o ficheiro DentalDB_V3.sqlite (localização padrão é c:\CAD-Data, mas pode variar consoante o distribuidor).
- Criar um esquema de base de dados no destino:
- Anotar o nome do esquema, utilizador e palavra-passe. No exemplo abaixo, o nome do esquema é dentaldb, o utilizador é test e a palavra-passe é somepass.
- Garantir que são atribuídas as permissões corretas ao utilizador da base de dados. Consultar a documentação da base de dados para mais detalhes.
- Criar o ficheiro settings-db.xml na pasta DentalDB\config, caso ainda não exista.
- Editar o ficheiro settings-db.xml conforme as instruções:
- Se a tag SQLSettings já existir, substituí-la pelo exemplo abaixo.
- Se a tag estiver ausente, adicioná-la conforme o exemplo.
- Abrir a Linha de Comandos e executar o DentalDB com o argumento /CreateDatabase.
- Nota: a janela do DentalDB não será aberta; a aplicação termina após criar as tabelas necessárias.
- Se necessário, ajustar a codificação da base de dados conforme descrito aqui
- Executar a ferramenta de migração escolhida, usando o ficheiro SQLite como origem e a base de dados configurada como destino.
Configuração 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>
Configuração SQL Server
Ligação via Autenticação 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>
Ligação via Autenticação do 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>
Escolher a codificação correta de caracteres para MariaDB/MySQL
O conjunto de caracteres da base de dados deve ser utf8mb4. Caso contrário, casos com certos caracteres especiais (ex: no campo Notas) não serão guardados corretamente. Se a collation predefinida não estiver ajustada, deve-se definir manualmente executando o seguinte comando SQL:
ALTER DATABASE dentaldb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Onde dentaldb é o nome da base de dados utilizada com o software DentalDB.
Resolução de problemas: Se o conjunto de caracteres não tiver sido corretamente definido desde o início, é possível converter as tabelas existentes retroativamente:
- 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;
Este procedimento só é necessário caso a base de dados tenha sido preenchida antes da definição do conjunto de caracteres correto.
AVISO
As instruções de migração acima são fornecidas sem qualquer garantia relativamente à perda ou validade de dados. Seguir estes passos é da inteira responsabilidade do utilizador.