psqlpack
Project Status
This experimental project has now been archived and is no longer maintained.
Psqlpack
Psqlpack is a database development tool that is intended to make working with PostgreSQL databases more productive. It was originally inspired by Microsoft SQL Server sqlpackage and currently supports the following tasks:
- Extract: Builds a psqlpack package (
.psqlpack
file) from an existing database target. - New: Generate a starting template for a psqlpack project (
.psqlproj
file) or generate a new publish profile (.publish
file) defining properties as to how a database schema should be update. - Package: Create a psqlpack package (
.psqlpack
file) from a source psqlpack project (.psqlproj
). - Publish: Incrementally update a database schema to match the schema of a source
.psqlpack
file or.psqlproj
project. If the database does not exist on the server, the publish operation will create it. Otherwise, an existing database will be updated. - Report: Generate a JSON report of changes that would be made by a publish action.
- Script: Create an SQL script of the incremental changes that would be applied to the target in order to match the schema of source.
Is it ready to be used?
Probably not. There are many features missing including SQL constructs as well as validations. This project is under development (albeit slowly), so if something is found to be missing then please raise an issue. The following list is a state of feature development:
Data Object Support
Feature | Status |
---|---|
Schemas | |
Tables | |
Types | |
Primary and Foreign Keys | |
Functions | |
Indexes | |
Views | |
Materialized Views | |
Security Objects | |
Extensions | |
Triggers |
License
Licensed under either of these:
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Contributing
Unless you explicitly state otherwise, any contribution you intentionally submit for inclusion in the work, as defined in the Apache-2.0 license, shall be dual-licensed as above, without any additional terms or conditions.