Meltano: Extract & Load with joy

4 min read Original article ↗

CLI & version control for ELT without limitations

Meltano gives data engineers
control and visibility
of their pipelines

No more black box. Let your creativity flow.

Sources
Destinations

SaaS APISaaS API

DatabaseDatabase

FileFile

Custom SourceCustom Source

DatabaseDatabase

Vector DBVector DB

Data WarehouseData Warehouse

Data LakeData Lake

Your data, where you want it
the way you want it

We've got 100% of your data sources & destinations covered:
Databases, SaaS APIs, raw files, and anything niche or internal

Reduce
cost

Pay only for the workloads you run, no matter how much the data volume grows, whether you self-manage or deploy on a managed orchestrator.

Learn more

Increase
efficiency

Build, improve, debug, and fix connectors yourself, without waiting or arguing with support. Support is here to help, not get in your way.

Learn more

Centralize
movement

Manage all your data pipelines in one place: databases, files, SaaS apps, internal sources, Python scripts, and data tools like dbt.

Learn more

Remove
constraints

Add that data source. Mask that PII before the warehouse. Tweak that connector. Let other teams contribute pipelines. Go for it!

Learn more

Customizable

Manage all your pipelines in one place
  • Custom connectors for niche or internal sources, built with our Meltano SDK
  • Custom forks of existing connectors with your own modifications
  • Your Python scripts and data tools like dbt

meltano add extractor tap-postgres

meltano add loader target-snowflake

cookiecutter https://github.com/meltano/sdk \

--directory="cookiecutter/tap-template

meltano add --custom extractor tap-my-api

meltano add utility dbt-snowflake

meltano add --custom utility my-script.py

meltano run tap-postgres target-snowflake dbt-snowflake

meltano run tap-my-api target-snowflake my-script.py

Transparent

Know exactly what's going on
  • Get the full view with detailed pipeline logs
  • Inspect the source code of any connector, modify them to your liking, or debug and fix an issue faster than any support agent
  • Centrally manage your configuration so anyone can suggest changes

export MELTANO_LOG_LEVEL=debug

meltano run tap-github target-duckdb

cat .meltano/logs/elt/github-to-duckdb-hourly/*/*.log

git clone https://github.com/MeltanoLabs/tap-github.git

git clone https://github.com/jwills/target-duckdb.git

meltano add --custom extractor tap-github-fork

meltano run tap-github-fork target-duckdb

Versionable

Increase productivity and collaboration
  • Store your pipelines and their configuration in Git and know exactly what is live at any time
  • Roll back to the last known-good configuration if a change accidentally broke something
  • Propose changes with confidence and get feedback from your team in pull requests

plugins:

extractors:

- name: tap-postgres

config:

host: pg.example.com

user: admin

password: $PG_PASSWORD

select:

- users.*

loaders:

- name: target-snowflake

schedules:

- name: app-to-dw

interval: @hourly

extractor: tap-postgres

loader: target-snowflake

Testable

Make changes with confidence
  • Safely experiment with new pipelines, connectors, and configuration changes on your local machine
  • Manually verify the impact of any changes in isolated feature-branch and staging environments
  • Automatically test your pipelines in CI, and only deploy to production once everything is green

git clone https://github.com/my-org/my-meltano-project.git

git checkout -b update-postgres

meltano config tap-postgres set host new-host.example

meltano select tap-postgres new-table "*"

meltano run tap-postgres target-snowflake

git commit -am "Update postgres host and table"

git push origin

gh pr create

Programmable

Integrate deeply with your product
  • Let your users directly connect data sources and manage pipelines from your application code
  • Define pipeline templates and dynamically instantiate them based on API credentials in your database
  • Configure connectors at runtime using environment variables or a dynamically generated config file

plugins:

extractors:

- name: tap-shopify

- name: tap-postgres--shopify-configs

inherit_from: tap-postgres

select:

- shopify_configs.*

loaders:

- name: target-snowflake

schedules:

- name: sync-all-shopify

interval: @hourly

config_source:

tap-shopify: tap-postgres--shopify-configs

extractor: tap-shopify

loader: target-snowflake

One tool for all your
data movement needs

No more point-and-click-and-cross-your-fingers.
Build data pipelines that fit exactly to your needs

Painlessly move data in and out of any database or warehouse: fast imports of large batches plus key-based and log-based (CDC) incremental replication with automatic schema migration. Ensure data security using in-flight filtering and hashing of PII.

See it in action

Quickly build a connector for any API using the Meltano SDK: built-in error and rate limit handling plus zero-effort incremental replication. Develop, test, and iterate locally and in staging, and debug using detailed pipeline logs and alerting.

Experience the tool

Extract data from any common or custom file format, stored in S3, (S)FTP, URLs, or cloud drives – with automatic schema migration. Ensure data security using in-flight filtering and hashing of PII, and debug using detailed pipeline logs and alerting.

Experience the tool

Choose from the largest connector library of any EL tool, and modify or fix connector behavior without waiting for support. Ensure data security using in-flight filtering and hashing of PII, and debug using detailed pipeline logs and alerting.

See it in action