---
title: "Przenieś zrzut PostgreSQL do innej wersji"
description: "Konwertuj plik pg_dump z PostgreSQL 10 lub nowszego na skrypt, który ładuje się na PostgreSQL od 13 do 18, z tymi samymi tabelami, kluczami i danymi oraz raportem zmian."
canonical: https://intosql.com/pl/postgresql-do-postgresql
last_updated: 2026-10-15
---

# Przenieś zrzut PostgreSQL do innej wersji

Upuść zwykły zrzut z pg_dump lub pg_dumpall, jako .sql lub .sql.gz, i pobierz jeden skrypt, który ładuje się na PostgreSQL od 13 do 18, niezależnie od wersji, która zapisała zrzut. Kolumny identity, enumy, tablice i jsonb zostają bez zmian, typy z rozszerzeń stają się text, a każda zmiana jest wymieniona w raporcie.

[Przewodnik migracji PostgreSQL do PostgreSQL](https://intosql.com/docs/migrations/postgresql-to-postgresql)

[Typy danych z PostgreSQL do PostgreSQL](https://intosql.com/docs/types/postgresql-to-postgresql)

## Co się zmienia między plikiem a skryptem

Każdy wiersz to reguła stosowana przez konwerter, z wpisem, który dodaje do raportu, gdy reguła coś zmienia w twoich danych.

| W pliku | W skrypcie | Wpis w raporcie |
| --- | --- | --- |
| varchar(n), char(n), text | te same typy |  |
| numeric(p,s), numeric without a precision, NaN and Infinity | te same typy i wartości |  |
| money | numeric(19,2) | `type_replaced` |
| enum types | te same typy enum, tworzone przed tabelami |  |
| enum columns holding values outside their labels | text bez CHECK | `enum_check_skipped` |
| composite and range types the dump defines, extension types (citext, hstore, ltree, PostGIS) and multiranges | text z tekstem PostgreSQL | `type_replaced` |
| citext | text, porównywany dokładnie | `case_insensitive_collation` |
| json, jsonb | te same typy |  |
| timestamp with time zone | timestamptz, te same momenty |  |
| time, time with time zone | te same typy |  |
| infinity, -infinity and BC dates | zachowane |  |
| NaN and Infinity in numeric, real and double precision | zachowane |  |
| generated columns | te same kolumny generowane |  |
| generated columns with functions IntoSQL doesn't write | zwykła kolumna z wartościami | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write | brak wartości domyślnej | `default_not_translated` |
| CHECK constraints with functions IntoSQL doesn't write | nie jest tworzone | `check_skipped` |
| CHECK ... NOT VALID | dodane jako NOT VALID po wierszach |  |
| gin, gist, brin and hash indexes, partial and expression indexes | nie jest tworzone | `index_skipped` |
| foreign keys to tables the dump doesn't create | nie jest tworzone | `foreign_key_skipped` |
| NOT NULL columns with values that become NULL | NOT NULL usunięte | `not_null_relaxed` |
| partitioned tables | jedna tabela z wierszami wszystkich partycji | `partitions_dropped` |
| views, functions, procedures, triggers, rules, policies, extensions and types other than enums | wymienione w raporcie | `not_converted_objects` |
| dumps without CREATE TABLE (--data-only) | typy odczytane z wartości | `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 | błędne bajty jako znak zastępczy | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | skopiowane bez zmian | `mojibake_suspected` |

## Załaduj skrypt do PostgreSQL

Skrypt tworzy tabele, kopiuje wiersze, a potem dodaje klucze, indeksy i klucze obce, więc ładuje się szybko i zatrzymuje przy pierwszym błędzie.

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

Klucze obce są dodawane jako NOT VALID, a potem sprawdzane. Jeśli wiersz wskazuje na nieistniejący wiersz, skrypt podaje, którego ograniczenia to dotyczy, zamiast przerwać w połowie.

Przy dużym zrzucie najpierw utwórz bazę danych i uruchom skrypt przez psql na tej samej maszynie co serwer.

IntoSQL Pro ładuje plik prosto do PostgreSQL z aplikacji na komputer lub wiersza poleceń, bez pisania skryptu.

## Jak zrobić zrzut PostgreSQL dla najlepszego wyniku

Konwerter odczytuje to, co zawiera zrzut. Te opcje zachowują w nim więcej twoich danych:

- --format=plain, domyślny w pg_dump, zapisuje SQL. Archiwum custom lub directory (-Fc, -Fd) zamienisz na SQL poleceniem pg_restore -f dump.sql, bez serwera bazy danych.
- --no-owner --no-privileges pomijają role i uprawnienia, które konwerter i tak pomija, więc zrzut jest mniejszy.
- pg_dumpall zapisuje każdą bazę danych w jednym pliku; nazwy tabel każdej z nich zaczynają się od jej nazwy, więc nic się nie powtarza.

## Co nie jest konwertowane

Widoki, wyzwalacze, procedury, funkcje i inne obiekty napisane we własnym języku PostgreSQL są wymienione w raporcie z nazwy i nigdy nie są pomijane po cichu, więc możesz sprawdzić każdy z nich w wersji PostgreSQL, do której ładujesz, zanim go odtworzysz.

## Pytania o przenoszenie PostgreSQL między wersjami

### Czy mój zrzut jest wysyłany?

Nie. Konwerter działa w przeglądarce i odczytuje zrzut z dysku po kawałku, więc nigdy nie opuszcza on twojego komputera. Aplikacja na komputer i wiersz poleceń też konwertują na twoim komputerze.

### Jak duży może być zrzut?

Konwerter nigdy nie trzyma całego zrzutu w pamięci: czyta plik dwa razy, fragmentami, i zapisuje skrypt na bieżąco. Zrzuty wielogigabajtowe konwertują się w przeglądarce, w aplikacji na komputer i w wierszu poleceń.

### Czy odczytuje archiwa pg_dump -Fc?

Nie bezpośrednio: archiwum custom to format binarny. pg_restore -f dump.sql dump.backup zamienia je na zwykły SQL, który czyta konwerter, bez łączenia z serwerem. Konwerter informuje o tym, gdy dostanie archiwum.

### Z jakich wersji PostgreSQL może pochodzić zrzut?

Zrzuty zapisane przez pg_dump i pg_dumpall z PostgreSQL od wersji 10, z wierszami COPY lub INSERT. Każdy testowy zrzut pochodzi z PostgreSQL 13 i 18 i jest porównywany ze źródłem komórka po komórce.

### Czy wartości serial i identity są zachowywane?

Tak. Kolumny serial i identity pozostają kolumnami identity, każdy wiersz zachowuje swoje id, a każdy licznik idzie dalej od wartości, którą osiągnęła sekwencja w zrzucie.

### Co dzieje się z tablicami, typami enum i innymi typami PostgreSQL?

Zostają bez zmian: tablice, zakresy, json i jsonb, ciągi bitów, z wyjątkiem money. Typy enum są tworzone ponownie z ich etykietami. Typy z rozszerzeń (citext, hstore, PostGIS) i typy złożone stają się tekstem, a raport podaje, których kolumn to dotyczy.

### A funkcje, wyzwalacze i widoki?

Raport wymienia je z nazwy, ale nie są konwertowane, więc możesz je odtworzyć, gdy tabele będą już na miejscu. Ograniczenia CHECK NOT VALID są dodawane po wierszach, nadal jako niezwalidowane.

### Na jakich wersjach PostgreSQL ładuje się skrypt?

PostgreSQL od 13 do 18, niezależnie od wersji, która zapisała zrzut. Ten sam skrypt ładuje się na każdej z nich i zatrzymuje przy pierwszym błędzie, jeśli coś pójdzie nie tak.

## Z PostgreSQL

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

## Do PostgreSQL

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

## Przewodnik i każda para

- [Przewodnik migracji PostgreSQL do PostgreSQL](https://intosql.com/docs/migrations/postgresql-to-postgresql)
- [Typy danych z PostgreSQL do PostgreSQL](https://intosql.com/docs/types/postgresql-to-postgresql)
- [Każda para baz danych](https://intosql.com/pl/migracja-bazy-danych)
