AI prompts
base on ingestr is a CLI tool to copy data between any databases with a single command seamlessly. <div align="center">
<img src="https://github.com/bruin-data/ingestr/blob/main/resources/ingestr.svg?raw=true" width="500" />
<p>Ingest & copy data from any source to any destination without any code</p>
<img src="https://github.com/bruin-data/ingestr/blob/main/resources/demo.gif?raw=true" width="750" />
</div>
<div align="center" style="margin-top: 24px;">
<a target="_blank" href="https://join.slack.com/t/bruindatacommunity/shared_invite/zt-2dl2i8foy-bVsuMUauHeN9M2laVm3ZVg" style="background:none">
<img src="https://img.shields.io/badge/slack-join-dlt.svg?color=d95f5f&logo=slack" style="width: 180px;" />
</a>
</div>
---
Ingestr is a command-line application that allows you to ingest data from any source into any destination using simple command-line flags, no code necessary.
- āØ copy data from your database into any destination
- ā incremental loading: `append`, `merge` or `delete+insert`
- š single-command installation
ingestr takes away the complexity of managing any backend or writing any code for ingesting data, simply run the command and watch the data land on its destination.
## Installation
```
pip install ingestr
```
## Quickstart
```bash
ingestr ingest \
--source-uri 'postgresql://admin:admin@localhost:8837/web?sslmode=disable' \
--source-table 'public.some_data' \
--dest-uri 'bigquery://<your-project-name>?credentials_path=/path/to/service/account.json' \
--dest-table 'ingestr.some_data'
```
That's it.
This command will:
- get the table `public.some_data` from the Postgres instance.
- upload this data to your BigQuery warehouse under the schema `ingestr` and table `some_data`.
## Documentation
You can see the full documentation [here](https://bruin-data.github.io/ingestr/getting-started/quickstart.html).
## Community
Join our Slack community [here](https://join.slack.com/t/bruindatacommunity/shared_invite/zt-2dl2i8foy-bVsuMUauHeN9M2laVm3ZVg).
## Supported Sources & Destinations
<table>
<tr>
<th></th>
<th>Source</th>
<th>Destination</th>
</tr>
<tr>
<td colspan="3" style='text-align:center;'><strong>Databases</strong></td>
</tr>
<tr>
<td>Postgres</td>
<td>ā
</td>
<td>ā
</td>
</tr>
<tr>
<td>BigQuery</td>
<td>ā
</td>
<td>ā
</td>
</tr>
<tr>
<td>Snowflake</td>
<td>ā
</td>
<td>ā
</td>
</tr>
<tr>
<td>Redshift</td>
<td>ā
</td>
<td>ā
</td>
</tr>
<tr>
<td>Databricks</td>
<td>ā
</td>
<td>ā
</td>
</tr>
<tr>
<td>DuckDB</td>
<td>ā
</td>
<td>ā
</td>
</tr>
<tr>
<td>Microsoft SQL Server</td>
<td>ā
</td>
<td>ā
</td>
</tr>
<tr>
<td>Local CSV file</td>
<td>ā
</td>
<td>ā
</td>
</tr>
<tr>
<td>MongoDB</td>
<td>ā
</td>
<td>ā</td>
</tr>
<tr>
<td>Oracle</td>
<td>ā
</td>
<td>ā</td>
</tr>
<tr>
<td>SAP Hana</td>
<td>ā
</td>
<td>ā</td>
</tr>
<tr>
<td>SQLite</td>
<td>ā
</td>
<td>ā</td>
</tr>
<tr>
<td>MySQL</td>
<td>ā
</td>
<td>ā</td>
</tr>
<tr>
<td colspan="3" style='text-align:center;'><strong>Platforms</strong></td>
</tr>
<td>Adjust</td>
<td>ā
</td>
<td>-</td>
<tr>
<td>Airtable</td>
<td>ā
</td>
<td>-</td>
</tr>
<tr>
<td>AppsFlyer</td>
<td>ā
</td>
<td>-</td>
</tr>
<tr>
<td>Chess.com</td>
<td>ā
</td>
<td>-</td>
</tr>
<tr>
<td>Facebook Ads</td>
<td>ā
</td>
<td>-</td>
</tr>
<tr>
<td>Gorgias</td>
<td>ā
</td>
<td>-</td>
</tr>
<tr>
<td>Google Sheets</td>
<td>ā
</td>
<td>-</td>
</tr>
<tr>
<td>HubSpot</td>
<td>ā
</td>
<td>-</td>
</tr>
<tr>
<td>Klaviyo</td>
<td>ā
</td>
<td>-</td>
</tr>
<tr>
<td>Notion</td>
<td>ā
</td>
<td>-</td>
</tr>
<tr>
<td>Shopify</td>
<td>ā
</td>
<td>-</td>
</tr>
<tr>
<td>Slack</td>
<td>ā
</td>
<td>-</td>
</tr>
<tr>
<td>Stripe</td>
<td>ā
</td>
<td>-</td>
</tr>
</table>
More to come soon!
## Acknowledgements
This project would not have been possible without the amazing work done by the [SQLAlchemy](https://www.sqlalchemy.org/) and [dlt](https://dlthub.com/) teams. We relied on their work to connect to various sources and destinations, and built `ingestr` as a simple, opinionated wrapper around their work.
", Assign "at most 3 tags" to the expected json: {"id":"8162","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"