{"id":13467869,"url":"https://github.com/singer-io/getting-started","last_synced_at":"2025-05-14T21:03:49.601Z","repository":{"id":43126566,"uuid":"72457842","full_name":"singer-io/getting-started","owner":"singer-io","description":"This repository is a getting started guide to Singer.","archived":false,"fork":false,"pushed_at":"2024-09-03T10:15:20.000Z","size":203,"stargazers_count":1297,"open_issues_count":29,"forks_count":145,"subscribers_count":41,"default_branch":"master","last_synced_at":"2025-04-03T14:57:18.831Z","etag":null,"topics":["data-analysis","etl","etl-framework","python","singer"],"latest_commit_sha":null,"homepage":"https://singer.io","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/singer-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-31T16:53:56.000Z","updated_at":"2025-04-03T00:18:39.000Z","dependencies_parsed_at":"2024-01-14T15:25:00.965Z","dependency_job_id":"e0727972-4532-4d65-927e-d42e7ec224e2","html_url":"https://github.com/singer-io/getting-started","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singer-io%2Fgetting-started","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singer-io%2Fgetting-started/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singer-io%2Fgetting-started/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singer-io%2Fgetting-started/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/singer-io","download_url":"https://codeload.github.com/singer-io/getting-started/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248351783,"owners_count":21089340,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-analysis","etl","etl-framework","python","singer"],"created_at":"2024-07-31T15:01:01.669Z","updated_at":"2025-04-11T06:19:19.542Z","avatar_url":"https://github.com/singer-io.png","language":"Makefile","readme":"# Singer\n\nSinger is an open source standard for moving data between databases, web APIs, files, queues, and just about anything else you can think of. The Singer spec describes how data extraction scripts — called “Taps” — and data loading scripts — called “Targets” — should communicate using a standard JSON-based data format over stdout. By conforming to this spec, Taps and Targets can be used in any combination to move data from any source to any destination.\n\nJoin the [Singer Slack channel](https://singer-slackin.herokuapp.com/) to get help from members of the Singer\ncommunity.\n\n## Docs\n- [Singer Specification](docs/SPEC.md#singer-specification)\n  - [Synopsis](docs/SPEC.md#synopsis)\n  - [Input](docs/SPEC.md#input)\n    - [Config](docs/SPEC.md#config)\n    - [State](docs/SPEC.md#state)\n    - [Example Invocations](docs/SPEC.md#example-invocations)\n  - [Output](docs/SPEC.md#output)\n    - [RECORD Message](docs/SPEC.md#record-message)\n    - [SCHEMA Message](docs/SPEC.md#schema-message)\n    - [STATE Message](docs/SPEC.md#state-message)\n  - [Example](docs/SPEC.md#example)\n  - [Versioning](docs/SPEC.md#versioning)\n- [Running and Developing Singer Taps and Targets](docs/RUNNING_AND_DEVELOPING.md#running-and-developing-singer-taps-and-targets)\n  - [Running Singer with Python](docs/RUNNING_AND_DEVELOPING.md#running-singer-with-python)\n  - [Developing a Tap](docs/RUNNING_AND_DEVELOPING.md#developing-a-tap)\n  - [Developing a Target](docs/RUNNING_AND_DEVELOPING.md#developing-a-target)\n- [Config and State](docs/CONFIG_AND_STATE.md#config-and-state)\n  - [Config File](docs/CONFIG_AND_STATE.md#config-file)\n  - [State File](docs/CONFIG_AND_STATE.md#state-file)\n- [Discovery Mode](docs/DISCOVERY_MODE.md#discovery-mode)\n  - [Schemas](docs/DISCOVERY_MODE.md#schemas)\n  - [The Catalog](docs/DISCOVERY_MODE.md#the-catalog)\n  - [Metadata](docs/DISCOVERY_MODE.md#metadata)\n- [Sync Mode](docs/SYNC_MODE.md#sync-mode)\n  - [Streams](docs/SYNC_MODE.md#streams)\n  - [Replication Method](docs/SYNC_MODE.md#replication-method)\n  - [Stream/Field Selection](docs/SYNC_MODE.md#streamfield-selection)\n  - [Metric Messages](docs/SYNC_MODE.md#metric-messages)\n- [Best Practices for Building a Singer Tap](docs/BEST_PRACTICES.md#best-practices-for-building-a-singer-tap)\n  - [Rate Limiting](docs/BEST_PRACTICES.md#rate-limiting)\n  - [Memory Constraints](docs/BEST_PRACTICES.md#memory-constraints)\n  - [Dates](docs/BEST_PRACTICES.md#dates)\n  - [Logging and Exception Handling](docs/BEST_PRACTICES.md#logging-and-exception-handling)\n  - [Module Structure](docs/BEST_PRACTICES.md#module-structure)\n  - [Schemas](docs/BEST_PRACTICES.md#schemas)\n  - [Code Quality](docs/BEST_PRACTICES.md#code-quality)\n  - [Dependency Versioning](docs/BEST_PRACTICES.md#dependency-versioning)\n- [FAQ](docs/FAQ.md#FAQ)\n  - [How do I prevent dependency conflicts between my tap and target?](docs/FAQ.md#how-do-i-prevent-dependency-conflicts-between-my-tap-and-target)\n\n---\n  Copyright \u0026copy; 2018 Stitch\n","funding_links":[],"categories":["Makefile","数据读写与提取","data-analysis","Data Loading \u0026 Extraction"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinger-io%2Fgetting-started","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsinger-io%2Fgetting-started","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinger-io%2Fgetting-started/lists"}