Firuzzz
Algo se podría hacer con Plpgsql pero no es tan facil como parece.
Lo que yo trataría de hacer, es una función que tome la información de mis tablas (Puede ser con information_schema.tables o information_schema.columns), con un cursor preguntar si el tipo de dato es double precision y si es el caso hacer un EXECUTE de un alter table sobre la tabla actual del cursor, crear un campo adicional de tipo numeric, vaciar el campo de double precision al numeric y borrar la columna.
Después de todo esto aplicar un vaccum para que no queden tuplas innecesarias y dispersas en memoria.
Cita: Resulta ser que los double precision son muy inexactos y no sirven para mi propósito
Tienes razón. En un pasado tuve el mismo problema y casi no doy con la explicación.
EDITO: También podrías hacerlo así:
Código SQL:
Ver originalpruebas=> CREATE TABLE numeros(num DOUBLE PRECISION);
CREATE TABLE
pruebas=> \d numeros
Tabla ½public.numeros╗
Columna | Tipo | Modificadores
---------+------------------+---------------
num | DOUBLE PRECISION |
pruebas=> ALTER TABLE numeros ALTER COLUMN num TYPE NUMERIC;
ALTER TABLE
pruebas=> \d numeros
Tabla ½public.numeros╗
Columna | Tipo | Modificadores
---------+---------+---------------
num | NUMERIC |
Si te creas 90 lineas de esta sentencia con la información de tus tablas, te tomará no mas de 1 hora.
Mientras piensas en el procedimiento, lo podrías hacer directamente. Igual no es una tarea que requieras constantemente en tu BD
saludos