Supongamos que tengo un proyecto en Supabase cuya base de datos se llama Paises, y quiero generar una base de datos Demo de esa misma. Entonces primero tengo que: exportar la base de datos de Paises, luego crear un nuevo proyecto llamado Demo-paises y finalmente importar la Base de datos a demo-paises.
Aquí se explican los pasos de manera detallada:
Pasos:
Instalación de pg_dump
- Descargar e instalar PostgreSQL desde el sitio oficial: https://www.postgresql.org/download/windows/
Seguir el asistente de instalación, el cual incluye pg_dumpl
Agregar al PATH:
Para agregarla al PATH
:
- Abre el Panel de Control.
- Ve a Sistema y Seguridad > Sistema > Configuración avanzada del sistema.
- En la pestaña de «Opciones avanzadas», haz clic en «Variables de entorno».
- En «Variables del sistema», encuentra la variable
Path
, selecciónala y haz clic en «Editar». - Agrega la ruta completa de la carpeta
bin
de PostgreSQL (por ejemplo,C:\Program Files\PostgreSQL\<version>\bin
). - Guarda los cambios y cierra todas las ventanas.
Verificar la instalación:
- Abre una nueva línea de comandos (cmd).
Ejecuta el comando:
pg_dump --version
Deberías ver la versión de pg_dump
, algo como:
pg_dump (PostgreSQL) 13.3<br>
Una vez que tengas pg_dump
instalado y verificado, podrás utilizarlo para exportar tu base de datos en Supabase.
EXPORTAR LA BASE DE DATOS DE SUPABASE
Sí, pg_dump
crea una copia de seguridad de tu base de datos y la guarda en un archivo en tu sistema local. Este archivo contiene todos los datos y la estructura de la base de datos, permitiendo que puedas restaurar la base de datos en el futuro o moverla a otro servidor. Aquí te explico en detalle cómo funciona:
Cómo Funciona pg_dump
- Exportación de la Base de Datos:Cuando ejecutas
pg_dump
, la herramienta conecta a tu base de datos de PostgreSQL y genera un archivo que contiene todos los comandos SQL necesarios para recrear la base de datos en su estado actual. Este archivo puede incluir:- Estructura de la Base de Datos: Tablas, índices, secuencias, vistas, funciones, y otros objetos de la base de datos.
- Datos: Todos los registros almacenados en las tablas de la base de datos.
- Configuraciones: Opciones de configuración específicas de la base de datos.
- Formato del Archivo:Puedes especificar diferentes formatos para el archivo de salida usando la opción
-F
depg_dump
:- Formato Plain Text (
-F p
): Un archivo de texto plano que contiene comandos SQL. Este formato es fácil de leer y modificar, pero puede ser más grande que otros formatos. - Formato Custom (
-F c
): Un formato binario específico depg_dump
que puede ser comprimido y permite una restauración más flexible conpg_restore
. Este es el formato recomendado para copias de seguridad. - Formato Tar (
-F t
): Un archivo tarball que contiene los datos. Este formato también puede ser restaurado conpg_restore
. - Formato Directory (
-F d
): Un directorio que contiene varios archivos, uno por cada tabla. Este formato es útil para bases de datos muy grandes.
- Formato Plain Text (
Comando pg_dump
El comando general para ejecutar pg_dump
es:
pg_dump -U <usuario> -h <host> -p <puerto> -d <nombre_de_la_base_de_datos> -F c -b -v -f <archivo de salida>
-U <usuario>
: Especifica el nombre de usuario para conectarse a la base de datos.-h <host>
: Especifica el host de la base de datos.-p <puerto>
: Especifica el puerto de la base de datos.-d <nombre_de_la_base_de_datos>
: Especifica el nombre de la base de datos que deseas exportar.-F c
: Especifica el formato del archivo de salida como custom.-b
: Incluye blobs en el dump.-v
: Activa el modo verboso, lo que proporciona más detalles sobre el proceso de exportación.-f <archivo_de_salida>
: Especifica el archivo de salida donde se guardará el dump.
Ejemplo de Exportación
Supongamos que tienes las siguientes credenciales para tu base de datos en Supabase:
- Usuario:
your_user
- Host:
db.your-supabase.co
- Puerto:
5432
- Base de datos:
paises
El comando para exportar la base de datos sería:
pg_dump -U your_user -h db.your-supabase.co -p 5432 -d paises -F c -b -v -f paises_dump.sql
Esto generará un archivo llamado paises_dump.sql
en el directorio actual que contiene toda la información de tu base de datos.
CREAR NUEVO PROYECTO PARA PONERLE LA BASE DE DATOS CON pg_restore
Crear el Nuevo Proyecto en Supabase:
- Ve a tu panel de Supabase.
- Crea un nuevo proyecto llamado «demo-paises».
Obtener las Credenciales de la Nueva Base de Datos:
- Una vez creado el nuevo proyecto, obtén los detalles de conexión de la nueva base de datos de manera similar a como lo hiciste para la base de datos «postgres».
Ejecutar pg_restore
:
Abre la línea de comandos (cmd) y ejecuta el siguiente comando, reemplazando <usuario>
, <host>
, <puerto>
, <archivo_de_entrada>
con los valores apropiados:
pg_restore -U <usuario> -h <host> -p <puerto> -d postgres -v paises_dump.sql
Por ejemplo, si tus credenciales son las siguientes para el nuevo proyecto:
- Usuario:
your_new_user
- Host:
db.new-supabase.co
- Puerto:
5432
- Base de datos:
postgres
El comando sería:
pg_restore -U your_new_user -h db.new-supabase.co -p 5432 -d postgres -v paises_dump.sql
RESUMEN
- Exportar la Base de Datos: Usa
pg_dump
para crear una copia de seguridad de tu base de datos «postgres» en Supabase. - Crear Nuevo Proyecto: Crea un nuevo proyecto en Supabase.
- Restaurar la Base de Datos: Usa
pg_restore
para importar la base de datos en el nuevo proyecto.
Siguiendo estos pasos, podrás exportar e importar tu base de datos de Supabase con todas sus tablas y configuraciones intactas.
Hacer Dump de Estructura Sin Datos
Para realizar un dump de solo la estructura de la base de datos (sin datos), puedes usar la opción -s
o --schema-only
en el comando pg_dump
. Esto asegurará que solo se exporten los comandos SQL necesarios para crear la estructura de la base de datos, excluyendo cualquier inserción de datos.
Ejemplo de Comando
El comando básico sería similar al que usaste anteriormente, pero agregando la opción -s
:
pg_dump -U <usuario> -h <host> -p <puerto> -d <nombre_de_la_base_de_datos> -s -F c -v -f estructura_dump.sql<br><code><br></code>
-s
o--schema-only
: Exporta solo la estructura de la base de datos, sin incluir datos.-F c
: Especifica el formato del archivo de salida como custom.-v
: Activa el modo verboso para obtener más detalles durante la operación.-f <archivo_de_salida>
: Especifica el nombre y la ubicación del archivo de salida.
Ejemplo Práctico
Supongamos que deseas hacer un dump de solo la estructura de la base de datos paises
en tu proyecto de Supabase:
pg_dump -U your_user -h db.your-supabase.co -p 5432 -d paises -s -F c -v -f estructura_paises.sql
Este comando creará un archivo estructura_paises.sql
en el directorio actual que contiene solo los comandos SQL para crear la estructura de la base de datos paises
, excluyendo cualquier dato almacenado en las tablas.
Restaurar desde un Dump de Estructura
Para restaurar la base de datos usando un archivo de dump que contiene solo la estructura, puedes seguir los mismos pasos que mencioné anteriormente para pg_restore
. La diferencia clave es que este dump no contendrá datos, por lo que la restauración creará la estructura vacía de la base de datos sin ningún contenido.
Consideraciones Adicionales
- Índices y Restricciones: Aunque el dump de solo estructura no incluye datos, sí incluirá índices y restricciones definidas en la base de datos original.
- Compatibilidad: Asegúrate de que el archivo de dump generado sea compatible con la versión de PostgreSQL que estás usando para la restauración.
Con esto, deberías poder crear y restaurar dumps de solo estructura de tu base de datos PostgreSQL en Supabase según sea necesario.