PostgreSQL data import/export utility
Project description
pgmerge - a PostgreSQL data import and merge utility
This utility's main purpose is to manage a set of CSV files that correspond with tables in a PostgreSQL database:
- Each of these CSV file's data can then be merged into their corresponding table (see section below).
- The database schema is analysed to determine dependencies among tables (due to foreign keys), and CSV files are then imported in the correct order such that the data/tables that they might depend on have been imported first.
pgmerge
can then also export data in the same format expected for import.
These features allow you to move data between databases with the same schema to keep them up to date and in sync, although it does not cover handling deleted data.
Import merging
Merging CSVs into a table means that the following process will occur (also called an upsert operation):
- Rows whose primary key don't yet exist in the table will be imported.
- When the primary key already exists, row values will be updated.
- Rows that are missing or unchanged will be ignored.
CLI arguments
$ pgmerge --help
Usage: pgmerge [OPTIONS] COMMAND [ARGS]...
Merges data in CSV files into a Postgresql database.
Options:
--version Show the version and exit.
--help Show this message and exit.
Commands:
export Export each table to a CSV file.
import Import/merge each CSV file into a table.
inspect Inspect database schema in various ways.
Import
$ pgmerge import --help
Usage: pgmerge import [OPTIONS] DIRECTORY [TABLES]...
Import/merge each CSV file into a table.
All CSV files need the same name as their matching table and have to be located
in the given directory. If one or more tables are specified then only they will
be used, otherwise all tables found will be selected.
Options:
-d, --dbname TEXT Database name to connect to. [required]
-h, --host TEXT Database server host or socket directory.
[default: localhost]
-p, --port TEXT Database server port. [default: 5432]
-U, --username TEXT Database user name. [default: postgres]
-s, --schema TEXT Database schema to use. [default: public]
-w, --no-password Never prompt for password (e.g. peer
authentication).
-W, --password TEXT Database password (default is to prompt for
password or read config).
-L, --uri TEXT Connection URI can be used instead of specifying
parameters separately (also sets --no-password).
-f, --ignore-cycles Don't stop import when cycles are detected in
schema (will still fail if there are cycles in
data)
-F, --disable-foreign-keys Disable foreign key constraint checking during
import (necessary if you have cycles, but requires
superuser rights).
-c, --config PATH Config file for customizing how tables are
imported/exported.
-i, --include-dependent-tables When selecting specific tables, also include all
tables on which they depend due to foreign key
constraints.
--help Show this message and exit.
Installation
WARNING: the reliability of this utility is not guaranteed and loss or corruption of data is always a possibility.
Install from PyPI
With Python 3
installed on your system, you can run:
pip install pgmerge
To test that installation worked, run:
pgmerge --help
and you can uninstall at any time with:
pip uninstall pgmerge
Install from Github
To install the newest code directly from Github:
pip install git+https://github.com/samuller/pgmerge
Issues
If you have trouble installing and you're running a Debian-based Linux that uses Python 2
as its system default, then you might need to run:
sudo apt install libpq-dev python3-pip python3-setuptools
sudo -H pip3 install pgmerge
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pgmerge-1.13.0.tar.gz
.
File metadata
- Download URL: pgmerge-1.13.0.tar.gz
- Upload date:
- Size: 31.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.8.10 Linux/5.15.90.1-microsoft-standard-WSL2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d8d8253f9f26d64dde23ff68661b435d840c4e8ee36f7a019cb1daf7ad0e463 |
|
MD5 | 195b53832605249d75ebad991c66c418 |
|
BLAKE2b-256 | aa7fcb7623b7981b0229572baeaa7c93a50ed0695883fabfd944d008302bbb75 |
File details
Details for the file pgmerge-1.13.0-py3-none-any.whl
.
File metadata
- Download URL: pgmerge-1.13.0-py3-none-any.whl
- Upload date:
- Size: 36.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.8.10 Linux/5.15.90.1-microsoft-standard-WSL2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4eac4005f3da07f7b860ad41588edc70d8770e6ed78fc10b5ae44787d5e6035a |
|
MD5 | 1857ce5d120f6453648a4dea6288f254 |
|
BLAKE2b-256 | 8fe67c74c03b4b8945bb9bf0da3280bb36a92ea9828dfa1e25eb4dc01eadb70b |