Copy data between postgres databases
-
20-06-2021 - |
题
I need, as a one-off, to copy data from one table in a PostgreSQL database to the corresponding table in a different database. There's not that much data: about 2500 rows, 8 columns (some numeric, some varchar).
My first thought was to simply pg_dump -a -t table -f output.file
and then pg_restore
on another database. However, as it turned out, the versions of pg_dump
and the source server do not match - and I have no control over versions, so upgrading is not an option:
pg_dump: server version: 9.1.2; pg_dump version: 9.0.5
pg_dump: aborting because of server version mismatch
Unfortunately, with version 9 of Postgres, option -i
(ignore version) is not longer available. I do know what I am doing, but it still wouldn't let me (naturally).
What other options do I have?
解决方案
I would use COPY TO
and COPY FROM
. Works in either of the versions and is the optimal tool for this.
If you want to use pg_dump
, you have to use the appropriate version. There are separate executables for each version. On Linux you can get the path of the currently used executable with which pg_dump
.