Extract Schema from Postgres Database
Reads various metadata from your postgres database and returns a js object. This package is used by Kanel to generate Typescript types and Schemalint to provide linting of database schemas.
Installation
npm i extract-pg-schema
Library Usage
You give it a postgres connection config object and some options and it will connect to your database and generate
const { extractSchemas } = require("extract-pg-schema");
async function run() {
const connection = {
host: "localhost",
database: "postgres",
user: "postgres",
password: "postgres",
};
const result = await extractSchemas(connection);
console.log(result);
}
run();
The generated output is a record of schemas, described with the Schema type.
pglite
The connection
parameter can either be an object like shown above or a connection string. If the connection string starts with "file:" the specified path is opened using pglite. For example, when providing file:my/pglite/db/folder
, the folder 'my/pglite/db/folder'
is opened using pglite.
CLI Usage
You can also use the CLI to extract the schemas from a database and write it to the console or a file in JSON format.
npx extract-pg-schema -h localhost -p 5432 -U postgres -d postgres > schemas.json
The CLI takes a small subset of the options that pg_dump takes. You can also use the environment variables starting with PG
to set the connection parameters.
Usage: extract-pg-schema [options] [DBNAME]
Extract all schemas from a PostgreSQL database and print them as JSON.
Options:
--help show this help
-h, --host=HOSTNAME database server host or socket directory
-p, --port=PORT database server port
-U, --username=USERNAME database user name
-d, --dbname=DBNAME database name to connect to
-n, --schema=SCHEMA include schema regular expression (may be given multiple times)
-N, --exclude-schema=SCHEMA exclude schema regular expression (may be given multiple times)