Use built-in extractors (CSV, JSON, XML, XLS, ...), official add-ons (SQL), or write your own.
Apply changes using simple python, or provided transformation classes.
Use our built-in writers (CSV, JSON, XML, XLS, ...) or connect to your custom services.
Tired of learning new APIs?
You'll be up and running in 10 minutes, if you know some python.
Each transformation has a specific, unique, small and scoped purpose (think UNIX), enhancing testability and ease of maintenance.
It's just python ! We worked hard to provide a clean API, using the standard data structures you already know.
The smallest building blocks of Bonobo scripts are plain old python objects. Anything callable (or iterable) can be used as a node.
Bonobo provides the tools to combine the nodes in graphs, visualize the structure and execute them efficiently.
Bonobo processes the data as streams of independent rows.
Each node handles one line at a time, but the nodes run in parallel.
Use the command line interface and watch live and detailed statistics.
It's easy to design your graph according to your business requirements.
Bonobo is just a minimalistic toolkit to help you build ETL jobs.
Use bonobo.config to create parametrizable classes that will get configured at runtime with options and service dependencies, or use built-in transformations to work with usual file formats and operations.
Clean, readable and easy to test!
You just built your first reusable block, now just create instances of this class in your graphs, eventually overriding some parameters.
Once again, it's just python so you can bundle your blocks in modules or packages, as you would do with the rest of your codebase.
(jump to 9 minutes to skip the intro)
Official bonobo-sqlalchemy extension, still in alpha/preview, allows to connect, extract and load data from and into popular SQL databases.
Work with SQL databases
Bonobo uses plugins to display status of an ETL job while and after it runs. It will autodetect if you're working in a Jupyter Notebook and use an HTML widget to display live status.
Although Bonobo is a code-as-configuration framework, you can use the built-in inspector to output a graphviz description to visualize and/or document your ETL jobs.
The simplest transformations are conversions from one to another format. Bonobo's CLI bundles a convert command that does just that.
Convert a CSV to JSON
Convert a JSON to CSV
The official bonobo-docker extension can be used to build and run ETL jobs within Docker containers.
Run an ETL job in docker
Some companies provides us with with free services, and this section is there to thank them.
Makersquad invests some company time on Bonobo ETL development and covers expenses (conferences, web hosting, ...)
We can do Bonobo-related consulting.
Sentry provides Bonobo a free account to test our integrations with their systems, allong with monitoring our systems. Check'em out, they're awesome!
RedmineUp allows us to use their plugins to manage our redmine instance. If you're serious about Redmine, they have great tools for you !
We're looking for funding, contributions, and basically anything that can make Bonobo better.
We believe Open-Source software ultimately better serves its user. However, please note that creating good code is time consuming, and that contributors only have 24 hours in a day, most of those going to their day job.
Except in some rare cases, most of the coding work done on Bonobo ETL is done during free time of contributors, pro-bono. Please keep it in mind when asking for help or for features.
The best and quickest way to get a missing feature out there is to contribute.