---
title: "Pasar un volcado de PostgreSQL a otra versión"
description: "Convierte un archivo de pg_dump de PostgreSQL 10 o posterior en un script que carga en PostgreSQL 13 a 18, con las mismas tablas, claves y datos, y un informe de cambios."
canonical: https://intosql.com/es/postgresql-a-postgresql
last_updated: 2026-10-15
---

# Pasar un volcado de PostgreSQL a otra versión

Suelta un volcado plano de pg_dump o pg_dumpall, como .sql o .sql.gz, y descarga un script que carga en PostgreSQL 13 a 18, sin importar qué versión escribió el volcado. Las identidades, enums, arreglos y jsonb quedan igual, los tipos que trae una extensión se vuelven texto, y cada cambio aparece en el informe.

[Guía de migración de PostgreSQL a PostgreSQL](https://intosql.com/docs/migrations/postgresql-to-postgresql)

[Tipos de datos de PostgreSQL a PostgreSQL](https://intosql.com/docs/types/postgresql-to-postgresql)

## Qué cambia entre el archivo y el script

Cada fila es una regla que aplica el convertidor, con la línea que escribe en el informe cuando la regla cambia algo en tus datos.

| En el archivo | En el script | Línea del informe |
| --- | --- | --- |
| varchar(n), char(n), text | los mismos tipos |  |
| numeric(p,s), numeric without a precision, NaN and Infinity | los mismos tipos y valores |  |
| money | numeric(19,2) | `type_replaced` |
| enum types | los mismos tipos enum, creados antes de las tablas |  |
| enum columns holding values outside their labels | text sin CHECK | `enum_check_skipped` |
| composite and range types the dump defines, extension types (citext, hstore, ltree, PostGIS) and multiranges | text con el texto de PostgreSQL | `type_replaced` |
| citext | text, con comparación exacta | `case_insensitive_collation` |
| json, jsonb | los mismos tipos |  |
| timestamp with time zone | timestamptz, los mismos instantes |  |
| time, time with time zone | los mismos tipos |  |
| infinity, -infinity and BC dates | se conservan |  |
| NaN and Infinity in numeric, real and double precision | se conservan |  |
| generated columns | las mismas columnas generadas |  |
| generated columns with functions IntoSQL doesn't write | una columna simple con los valores | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write | sin valor predeterminado | `default_not_translated` |
| CHECK constraints with functions IntoSQL doesn't write | no se crea | `check_skipped` |
| CHECK ... NOT VALID | agregado NOT VALID después de las filas |  |
| gin, gist, brin and hash indexes, partial and expression indexes | no se crea | `index_skipped` |
| foreign keys to tables the dump doesn't create | no se crea | `foreign_key_skipped` |
| NOT NULL columns with values that become NULL | sin NOT NULL | `not_null_relaxed` |
| partitioned tables | una tabla con las filas de todas las particiones | `partitions_dropped` |
| views, functions, procedures, triggers, rules, policies, extensions and types other than enums | listados en el informe | `not_converted_objects` |
| dumps without CREATE TABLE (--data-only) | tipos leídos de los valores | `no_schema` |
| expressions in INSERT values | NULL | `expression_value` |
| types IntoSQL doesn't know | text | `unknown_type` |
| text that isn't valid in its encoding | los bytes incorrectos como carácter de reemplazo | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | se copia tal cual | `mojibake_suspected` |

## Carga el script en PostgreSQL

El script crea las tablas, copia las filas y luego agrega claves, índices y claves foráneas, así que carga rápido y se detiene en el primer error.

```shell
psql -v ON_ERROR_STOP=1 -d mydb -f postgresql.postgresql.sql
```

Las claves foráneas se agregan como NOT VALID y luego se validan. Si una fila apunta a una fila que no existe, el script te dice qué restricción es, en lugar de fallar a medias.

Para un volcado grande, crea primero la base de datos y ejecuta el script con psql desde la misma máquina que el servidor.

IntoSQL Pro carga el archivo directo en PostgreSQL desde la app de escritorio o la línea de comandos, sin escribir un script.

## Haz el volcado de PostgreSQL para el mejor resultado

El convertidor lee lo que contiene el volcado. Estas opciones conservan más de tus datos en él:

- --format=plain, el formato predeterminado de pg_dump, escribe SQL. Un archivo custom o de directorio (-Fc, -Fd) pasa a SQL con pg_restore -f dump.sql, sin un servidor de base de datos.
- --no-owner --no-privileges dejan fuera los roles y los permisos, que el convertidor omite de todos modos, así que el volcado es más pequeño.
- pg_dumpall vuelca todas las bases de datos en un archivo; las tablas de cada una llevan su nombre, así que nada choca.

## Qué no se convierte

Las vistas, disparadores, procedimientos, funciones y otros objetos escritos en el propio lenguaje de PostgreSQL aparecen en el informe por nombre, nunca se descartan en silencio, para que revises cada uno contra la versión de PostgreSQL en la que cargas antes de recrearlo.

## Preguntas sobre pasar PostgreSQL entre versiones

### ¿Se sube mi volcado?

No. El convertidor se ejecuta en tu navegador y lee el volcado de tu disco por partes, así que nunca sale de tu computadora. La app de escritorio y la línea de comandos también convierten en tu computadora.

### ¿Qué tan grande puede ser el volcado?

El convertidor nunca tiene todo el volcado en memoria: lee el archivo dos veces, por rangos, y escribe el script sobre la marcha. Los volcados de varios gigabytes se convierten en el navegador, en la app de escritorio y con la línea de comandos.

### ¿Lee archivos de pg_dump -Fc?

No directamente: un archivo custom tiene formato binario. pg_restore -f dump.sql dump.backup lo pasa al SQL plano que lee el convertidor, sin conectarse a un servidor. El convertidor lo indica cuando recibe un archivo así.

### ¿De qué versiones de PostgreSQL puede venir el volcado?

Volcados escritos por pg_dump y pg_dumpall de PostgreSQL 10 en adelante, con filas COPY o INSERT. Cada volcado de prueba viene de PostgreSQL 13 y 18 y se compara con su origen celda por celda.

### ¿Se conservan los valores serial e identity?

Sí. Las columnas serial e identity siguen siendo columnas de identidad, cada fila conserva su id, y cada contador sigue desde el valor que había alcanzado la secuencia del volcado.

### ¿Qué pasa con los arreglos, los enum y otros tipos de PostgreSQL?

Se quedan tal cual: arreglos, rangos, json y jsonb, cadenas de bits, salvo money. Los tipos enum se vuelven a crear con sus etiquetas. Los tipos de una extensión (citext, hstore, PostGIS) y los tipos compuestos se vuelven text, y el informe dice qué columnas.

### ¿Qué pasa con las funciones, los disparadores y las vistas?

Aparecen en el informe por nombre y no se convierten, para que puedas volver a crearlos una vez cargadas las tablas. Los CHECK NOT VALID se agregan después de las filas, todavía sin validar.

### ¿En qué versiones de PostgreSQL carga el script?

PostgreSQL 13 a 18, sea cual sea la versión que escribió el volcado. El mismo script carga en cada una, y se detiene en el primer error si algo sale mal.

## Desde PostgreSQL

- [PostgreSQL a MySQL](https://intosql.com/es/postgresql-a-mysql)
- [PostgreSQL a MariaDB](https://intosql.com/es/postgresql-a-mariadb)
- [PostgreSQL a SQLite](https://intosql.com/es/postgresql-a-sqlite)
- [PostgreSQL a SQL Server](https://intosql.com/es/postgresql-a-sql-server)
- [PostgreSQL a Oracle](https://intosql.com/es/postgresql-a-oracle)

## Hacia PostgreSQL

- [MySQL a PostgreSQL](https://intosql.com/es/mysql-a-postgresql)
- [MariaDB a PostgreSQL](https://intosql.com/es/mariadb-a-postgresql)
- [SQL Server a PostgreSQL](https://intosql.com/es/sql-server-a-postgresql)
- [SQLite a PostgreSQL](https://intosql.com/es/sqlite-a-postgresql)
- [Oracle a PostgreSQL](https://intosql.com/es/oracle-a-postgresql)

## Guía y todos los pares

- [Guía de migración de PostgreSQL a PostgreSQL](https://intosql.com/docs/migrations/postgresql-to-postgresql)
- [Tipos de datos de PostgreSQL a PostgreSQL](https://intosql.com/docs/types/postgresql-to-postgresql)
- [Todos los pares de bases de datos](https://intosql.com/es/migracion-de-bases-de-datos)
