×
Como hacer un bloque de codigo en PostgreSQL

Como hacer un bloque de codigo en PostgreSQL


Cuando trabajamos con bases de datos o sistemas de información algunas veces nos vemos en la necesidad de realizar una optimización o migración de la información que se encuentra en la base de datos, bien sea para mejorar el flujo de información del sistema o  como también mejorar el performance de la aplicación a través de otra base de datos distinta a la que se utilizaba actualmente.

Existen varias maneras y herramientas para realizar este tipo de tareas. Sin embargo con una simple consola SQL podemos escribir pequeños bloques de códigos que nos ayuden a realizar estas tareas.

Vamos a mostrar unos pequeños pero muy útiles ejemplos de como desarrollar estos bloques de código en una consola de base de datos en esta oportunidad para PostgreSQL. Supongamos que deseo actualizar el flujo de información de la tabla usuarios de una aplicación teniendo en cuenta que existen diferentes códigos de estatus de usuarios y estos estatus son diferentes a la nueva base de datos que deseo migrar.

Podemos escribir lo siguiente:

 

do
 $$declare
    --En esta sección colocaremos las variables que utilizaremos en nuestro código sql.
    usuario record;
 begin
    --Es esta sección colocaremos nuestro código sql.
    for usuario in select
         count(u.*) as id,
         u.department as departamento
      from
         usuarios as u
      where
         u.status_id=1
      group by
         departamento
      order by
         departamento
      loop
         raise notice '% % Números de usuarios por departamento con estatus 1', usuario.id,  usuario.departamento;
      end loop;
 end$$

 

Con este sencillo bloque de código ya hemos seleccionado a los usuarios que deseamos actualizar el estatus para ser migrado a otra tabla. Si se fijan utilice una variable tipo record llamada «usuario», la variable de tipo record me permitirá guardar todo los campos que traiga el «select» a través del método «for», y luego puede ser utilizado a lo largo de todo el bloque. Con la opción raise notice podemos ver el procedimiento o la ejecución de la operación, es como hacer un «echo» en php, un «alert» en javascript, etc., el símbolo de % es para mostrar el campo que deseas ver durante la operación, lo cual puedes utilizar así, un símbolo de % equivale a un campo del «select».

Ahora bien, ya que tenemos los usuarios o registros que deseamos actualizar el campo estatus, procedemos a realizar el update en la tabla con el valor que queremos. En este caso solo tenemos que agregar la sentencia update dentro del «loop» de la siguiente manera:

 

do
 $$declare
      usuario record;
 begin
      for usuario in select
         count(u.*) as id,
         u.department as departamento
      from
         usuarios as u
      where
         u.status_id=1
      group by
         departamento
      order by
         departamento
      loop
         update usuarios set status_id=2 where id = usuario.id;
      end loop;
 end$$

 

De esta manera realizara un update por cada registro que seleccione a través del «select». Con este sencillo bloque de código ya tendremos en esta ocasión nuestra data lista para ser migrada a la otra tabla. Así como este ejemplo puedes hacer muchas otros, tanto sencillos como complejos todo depende de lo que requieras y recuerda que puedes aplicarlo en cualquier base de datos PostgreSQL de nuestros planes de hosting compartido, cloud vps o bien servidores dedicados.

¿Te gustó el artículo? Compártelo:

Santiago Borges

Escrito por Santiago Borges

Departamento Técnico VIP, asignado a brindar soporte de forma exclusiva a clientes de alto tráfico y con requerimientos de programación. Además, es un experimentado SysAdmin, que se encargará de que recibas la mejor asistencia ante cualquier problema. Actualmente está cursando estudios de RHCE y posee certificaciones en Inglés por la Universidad de Cambridge. Conoce más sobre él desde su perfil de LinkedIn.

    Recibe en tu correo electrónico toda la información sobre hosting, desarrollo web y dominios

    Términos y Condiciones de Servicio

    Infranetworking Internacional - Copyright 2002-2024
    Todos los derechos reservados.