Unas notas sobre los problemas encontrados en el proceso de migración de 3 bases de datos.
Hay varias diferencias esenciales entre los dos SGBD.
El documento que describe las mismas es:
Migrating HSQLDB Base files to Firebird Base files, que se encuentra en: https://wiki.documentfoundation.org/Documentation/FirebirdMigration
Para comenzar hay que asegurarse que LibreOffice Base esté en modo HSLQDB.
Herramientas – Opciones – Avanzado – Activar funcionalidades expermientales (desactivado).
– Primero realizar una copia de la base que vamos a convertir, para trabajar con la copia, y dejar el original resguardado. Se le puede dar un nombre que no nos confunda, por ejemplo master_firebird.odb (dónde «master» es el nombre original de la misma.
– Editar todas las tablas, comprobando si tenemos campos «numéricos» o «decimales». Caso de existir habría que cambiarlos por otro tipo de datos: «DOUBLE PRECISION». Hay un bug, (que no ha sido aún corregido ni se sabe si va a implementar), que da errores en la conversión automática. La conversión, normalmente, no se puede hacer directamente por diferentes motivos.
– En caso de existir Vistas de Tablas habría que comprobar que la sintaxis se adapta a las nuevas características.
Ello se puede ver en el documento al que hice mención al principio.
La concatenación de campos solo puede hacerse un modo (‘str1’‖’str2’‖’str3’), extraer de una fecha el día de la semana, el año, el mes, el trimestre… no se realiza de la misma manera que hasta ahora. Y mas.
Si hay campos con datos decimales o numéricos, y están involucrados en Vistas de Tablas, no se pueden cambiar a DOUBLE con una instrucción SQL.
Las Vistas, una vez convertida la Base a Firebird no se pueden editar.
En mi caso me planteé cambiar las Vistas por consultas y evitar problemas.
La Vistas de Tablas, en Firebird, según mi opinión, existen por compatibilidad con versiones anteriores.
En Firebird se pueden crear vistas, en el modo de edicción de consultas, pero no se pueden modificar. No se puede acceder a la edición SQL, en la edición normal sale un editor, igual que el de tablas, en el que no se puede realizar ninguna operación.
Por ello he prescindido de las Vistas y he realizado unas consultas idénticas a las mismas, y con los mismos nombres.
He creado unas consultas, idénticas a las Vistas, He rectificado el resto de consultas. cambiando las que tuvieran origen en las Vistas, por su respectiva consulta. Si por ejemplo, tengo una Vista vMovimientos, he creado la consulta vMovimientos.
He creado unas consultas copiando la intrucción SQL de las vistas, les he puesto un nombre cualquiera. Una vez creadas todas, he eliminado las vistas y he cambiado el normbre de las consultas al que tenían anteriormente las vistas.
– Hay que tener precaución con el número de caracteres que tiene el nombre de una tabla, una consulta o una vista, al igual que el de los campos. El máximo número de dígitos que permite Firebird son 30 caracteres. En HSLQDB creo que eran 50. El error salta al ejecutar la consulta.
– Los nombres de la tablas y de los campos, incluidas las consultas, no deben incluir ciertos caracteres. quienes hablamaos español no podemos usar la «Ñ». Me pasó con un campo que era Año. Tuve que cambiarlo por Anualidad.
– Una forma rápida de cambiar los campos númericos o decimales a DOUBLE es con una instrucción SQL (siempre que el campo no esté involucrado en una Vista de Tabla)
La instrucción es la siguiente: ALTER TABLE «NombreTabla» ALTER COLUMN «NombreCampo» DOUBLE
Dónde NombreTabla es el nombre de la tabla, NombreCampo es el de la columna y DOUBLE es el tipo de datos que quiero ponerle.
Firebird es mas estricto en la comprobación de las consultas que HSQLDB. Puede que alguna no funciones después de la conversión, arrojando error. Ya sería menos laborioso modificar las que den error.
Precaución y suerte.
Un saludo,
Emiliano.