https://github.com/altaurog/pgcopy
fast data loading with binary copy
https://github.com/altaurog/pgcopy
bulk-loader postgresql
Last synced: about 1 year ago
JSON representation
fast data loading with binary copy
- Host: GitHub
- URL: https://github.com/altaurog/pgcopy
- Owner: altaurog
- License: other
- Created: 2015-08-11T20:20:45.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2025-03-11T08:22:28.000Z (over 1 year ago)
- Last Synced: 2025-05-15T23:02:34.430Z (about 1 year ago)
- Topics: bulk-loader, postgresql
- Language: Python
- Homepage: https://pgcopy.readthedocs.io/
- Size: 254 KB
- Stars: 117
- Watchers: 5
- Forks: 32
- Open Issues: 5
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- License: LICENSE.txt
- Authors: AUTHORS.rst
Awesome Lists containing this project
README
.. home-start
pgcopy
=======
.. image:: https://github.com/altaurog/pgcopy/actions/workflows/test.yaml/badge.svg?branch=master
:target: https://github.com/altaurog/pgcopy/actions/workflows/test.yaml?query=branch%3Avector
.. image:: https://coveralls.io/repos/github/altaurog/pgcopy/badge.svg?branch=master
:target: https://coveralls.io/github/altaurog/pgcopy?branch=master
.. image:: https://img.shields.io/pypi/l/pgcopy.svg
:target: https://pypi.org/project/pgcopy/
.. image:: https://img.shields.io/pypi/wheel/pgcopy.svg
:target: https://pypi.org/project/pgcopy/
.. image:: https://img.shields.io/pypi/pyversions/pgcopy.svg
:target: https://pypi.org/project/pgcopy/
Use pgcopy_ for fast data loading into
PostgreSQL with `binary copy`_.
.. _binary copy: http://www.postgresql.org/docs/9.3/static/sql-copy.html
.. _pgcopy: https://pgcopy.readthedocs.io/en/latest/
Features
---------
* Support for many data types
* Support for multi-dimensional array types
* Support for schema and schema search path
* Support for mixed-case table and column names
* Transparent string encoding
* Utility for replacing entire table
Quickstart
-----------
.. quickstart-start
::
from datetime import datetime
from pgcopy import CopyManager
import psycopg2
cols = ('id', 'timestamp', 'location', 'temperature')
now = datetime.now()
records = [
(0, now, 'Jerusalem', 72.2),
(1, now, 'New York', 75.6),
(2, now, 'Moscow', 54.3),
]
conn = psycopg2.connect(database='weather_db')
mgr = CopyManager(conn, 'measurements_table', cols)
mgr.copy(records)
# don't forget to commit!
conn.commit()
.. home-end
Supported datatypes
-------------------
pgcopy supports the following PostgreSQL scalar types:
* bool
* smallint
* integer
* bigint
* real
* double precision
* char
* varchar
* text
* bytea
* enum types
* date
* time
* timestamp
* timestamp with time zone
* numeric
* json
* jsonb
* uuid
* arrays
* vector
Documentation
--------------
`Read the docs.`_
.. _Read the docs.: pgcopy_
See Also
--------
cpgcopy_, a Cython implementation, about twice as fast.
.. _binary copy: http://www.postgresql.org/docs/9.3/static/sql-copy.html
.. _psycopg2: https://pypi.org/project/psycopg2/
.. _pytz: https://pypi.org/project/pytz/
.. _pytest: https://pypi.org/project/pytest/
.. _cpgcopy: https://github.com/altaurog/cpgcopy
.. _Tox: https://tox.readthedocs.io/en/latest/