Potrzebuję skopiować zawartość tabeli z jednej bazy danych do innej bazy danych z identyczną tabelą, która jest obecnie pusta.pg_dump vs COPY (SELECT * FROM my_table)
Mam zamiar zrzucić dane tabeli ze starej tabeli, a następnie po prostu zaimportować ją do pustej tabeli w nowej bazie danych. Jednak napotkałem pewne zachowanie, którego nie rozumiem, używając pg_dump.
próbuję zrzucić dane z tabeli do pliku za pomocą polecenia:
pg_dump -a -t '"my_table"' my_database > /tmp/my_table.sql
To działa, ale pojawia się tylko 8 rejestrów i istnieje ponad 1000 rekordów w tabeli gdybym obejrzeć tabelę jak tak :
SELECT * FROM my_table;
Tak, próbowałem użyć polecenia Kopiuj, aby wygenerować plik .csv i widzę podobne zachowanie:
COPY my_table TO '/tmp/my_table.csv' WITH CSV HEADER;
Otrzymuję te same 8 rekordów, co pg_dump. Ale z:
COPY (SELECT * FROM my_table) TO '/tmp/my_table.csv' WITH CSV HEADER;
Mam wszystkie 1266 rekordów.
Zakładam, że te polecenia powinny zwrócić te same dane, ale oczywiście jestem w błędzie. Jaka jest różnica?
To całkiem szalone. Czy możesz pokazać wynik? –
ile rekordów w '/ tmp/my_table.sql'? – xdazz