> For the complete documentation index, see [llms.txt](https://docs.release.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.release.com/guides-and-examples/advanced-guides/data/seeding-migration.md).

# Seeding and migration

Data seeding or data migration involves adding data to ephemeral environments by running a process (either as a separate job or within your service) to populate the database with data that's usable.

### Data seeding

Data seeding generally involves running a job alongside your services that connects to the database to create the appropriate contents. This could be as simple as running `mysql < seed.sql`, or as complex as generating and injecting fake data.

You will need to develop a script that can be run within a job container (most frequently the same container as your service) that reads the appropriate environment variables for your database host, user, and password, and then connects and adds data.

There are standard frameworks for this in most languages.

### Data migrations

Much like data seeding, data migration can be handled in a variety of ways, but it's commonly done within the framework you're writing software in (Django, Rails, etc.). Data migrations must be run at startup, so that the first thing your backend service does is run its own migrations into the empty database to populate it.

{% hint style="danger" %}
We commonly find that nobody has run migrations from scratch in years in the real world, and they often fail from empty databases if not exercised on a regular basis. You may have to do some repair work to make migrations work!
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.release.com/guides-and-examples/advanced-guides/data/seeding-migration.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
