PostgreSQL
Official · maintained by Marmotmarmotdata/postgresql Discover databases, schemas, and tables from PostgreSQL instances
The PostgreSQL plugin discovers databases, schemas, and tables from PostgreSQL instances. It captures column information, table metrics, and foreign key relationships for lineage.
Required Permissions
The user needs read access to the information schema:
GRANT CONNECT ON DATABASE your_db TO marmot_reader;
GRANT USAGE ON SCHEMA public TO marmot_reader;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO marmot_reader;
Example Configuration
host: "prod-postgres.company.com"
port: 5432
user: "marmot_reader"
password: "secure_password_123"
ssl_mode: "require"
tags:
- "postgres"
- "production"
Configuration
The following configuration options are available:
| Property | Type | Required | Description |
|---|---|---|---|
| discover_foreign_keys | bool | false | Whether to discover foreign key relationships |
| enable_metrics | bool | false | Whether to include table metrics |
| exclude_system_schemas | bool | false | Whether to exclude system schemas (pg_*) |
| external_links | []ExternalLink | false | External links to show on all assets |
| filter | Filter | false | Filter discovered assets by name (regex) |
| host | string | false | PostgreSQL server hostname or IP address |
| include_columns | bool | false | Whether to include column information in table metadata |
| include_databases | bool | false | Whether to discover databases |
| password | string | false | Password for authentication |
| port | int | false | PostgreSQL server port |
| ssl_mode | string | false | SSL mode (disable, require, verify-ca, verify-full) |
| tags | TagsConfig | false | Tags to apply to discovered assets |
| user | string | false | Username for authentication |
Available Metadata
The following metadata fields are available:
| Field | Type | Description |
|---|---|---|
| allow_connections | bool | Whether connections to this database are allowed |
| collate | string | Database collation |
| column_default | string | Default value expression |
| column_name | string | Column name |
| comment | string | Column comment/description |
| comment | string | Object comment/description |
| connection_limit | int | Maximum allowed connections |
| constraint_name | string | Foreign key constraint name |
| created | string | Creation timestamp |
| ctype | string | Database character classification |
| data_type | string | Data type |
| database | string | Database name |
| encoding | string | Database encoding |
| host | string | PostgreSQL server hostname |
| is_nullable | bool | Whether null values are allowed |
| is_primary_key | bool | Whether column is part of primary key |
| is_template | bool | Whether database is a template |
| object_type | string | Object type (table, view, materialized_view) |
| owner | string | Object owner |
| port | int | PostgreSQL server port |
| row_count | int64 | Approximate row count |
| schema | string | Schema name |
| size | int64 | Object size in bytes |
| source_column | string | Column in the referencing table |
| source_schema | string | Schema of the referencing table |
| source_table | string | Name of the referencing table |
| table_name | string | Object name |
| target_column | string | Column in the referenced table |
| target_schema | string | Schema of the referenced table |
| target_table | string | Name of the referenced table |
In the UI
Point-and-click, no config file needed.
- 1 Open Runs Create pipeline
- 2 Pick PostgreSQL from the plugin list.
- 3 Fill in the wizard, set a schedule, save.
With the CLI
Save a YAML config, then run marmot ingest.
name: my-postgresql-pipeline
runs:
- postgresql:
host: "<host>"
user: "<user>"$ marmot ingest -c ingest.yamlNot using plugins? Other ways to populate Marmot
Configuration
13 top-level fields. * marks required fields.
tags multiselect Tags to apply to discovered assets
external_links object[] External links to show on all assets
name string Display name for the link
icon string Icon identifier for the link
url string URL to the external resource
filter object Filter discovered assets by name (regex)
include multiselect Include patterns for resource names (regex)
exclude multiselect Exclude patterns for resource names (regex)
host string PostgreSQL server hostname or IP address
port int PostgreSQL server port
- default
- 5432
user string Username for authentication
password password Password for authentication
ssl_mode select SSL mode (disable, require, verify-ca, verify-full)
- default
- disable
include_databases bool Whether to discover databases
- default
- true
include_columns bool Whether to include column information in table metadata
- default
- true
enable_metrics bool Whether to include table metrics
- default
- true
discover_foreign_keys bool Whether to discover foreign key relationships
- default
- true
exclude_system_schemas bool Whether to exclude system schemas (pg_*)
- default
- true
Assets emitted
Metadata this plugin attaches to each discovered asset.
Postgres
PostgresFieldsPostgresFields represents PostgreSQL-specific metadata fields
host stringPostgreSQL server hostname
port intPostgreSQL server port
database stringDatabase name
schema stringSchema name
table_name stringObject name
object_type stringObject type (table, view, materialized_view)
owner stringObject owner
size intObject size in bytes
row_count intApproximate row count
created stringCreation timestamp
comment stringObject comment/description
encoding stringDatabase encoding
collate stringDatabase collation
ctype stringDatabase character classification
is_template boolWhether database is a template
allow_connections boolWhether connections to this database are allowed
connection_limit intMaximum allowed connections
Postgres Column
PostgresColumnFieldsPostgresColumnFields represents PostgreSQL column-specific metadata fields
column_name stringColumn name
data_type stringData type
is_nullable boolWhether null values are allowed
column_default stringDefault value expression
is_primary_key boolWhether column is part of primary key
comment stringColumn comment/description
Postgres Foreign Key
PostgresForeignKeyFieldsPostgresForeignKeyFields represents PostgreSQL foreign key relationship fields
constraint_name stringForeign key constraint name
source_schema stringSchema of the referencing table
source_table stringName of the referencing table
source_column stringColumn in the referencing table
target_schema stringSchema of the referenced table
target_table stringName of the referenced table
target_column stringColumn in the referenced table