# Import from MySQL (/docs/prisma-postgres/import-from-existing-database-mysql)

Location: Prisma Postgres > Import from MySQL

This guide provides step-by-step instructions for importing data from an existing MySQL database into Prisma Postgres.

You can accomplish this migration in four steps:

1. Create a new Prisma Postgres database.
2. Connect directly to a Prisma Postgres instance using a [direct connection](/postgres/database/connecting-to-your-database).
3. Migrate your MySQL data to Prisma Postgres using [pgloader](https://pgloader.io/).
4. Configure your Prisma project for Prisma Postgres.

Prerequisites [#prerequisites]

* The connection URL to your existing MySQL database.
* A [Prisma Data Platform](https://console.prisma.io/?utm_source=docs\&utm_medium=content\&utm_content=%28index%29) account.
* Node.js 18+ installed.
* [pgloader](https://pgloader.io/) installed.

> [!NOTE]
> Make sure your PostgreSQL tools match the Prisma Postgres version
> 
> Prisma Postgres runs PostgreSQL 17. Your `pgloader` and any other PostgreSQL tools you use need to be compatible with PostgreSQL 17.

We recommend attempting this migration in a separate git development branch.

1. Create a new Prisma Postgres database [#1-create-a-new-prisma-postgres-database]

Follow these steps to create a new Prisma Postgres database:

1. Log in to [Prisma Data Platform](https://console.prisma.io/?utm_source=docs\&utm_medium=content\&utm_content=%28index%29) and open the Console.
2. In a [workspace](/console/concepts#workspace) of your choice, click the **New project** button.
3. Type a name for your project in the **Name** field, e.g. **hello-ppg**.
4. In the **Prisma Postgres** section, click the **Get started** button.
5. In the **Region** dropdown, select the region that's closest to your current location, e.g. **US East (N. Virginia)**.
6. Click the **Create project** button.

Once your database is\*\* \*\*provisioned, find your direct Prisma Postgres connection string:

1. Navigate to your active Prisma Postgres instance.
2. Click the **Connection Strings** tab in the project's sidenav.
3. Click the **Create connection string** button.
4. In the popup, provide a **Name** for the connection string and click **Create**.
5. Copy the connection string starting with `postgres://`, this is your direct connection string.

Save the connection string, as you'll need it in step 3.

2. Prepare your direct connection string [#2-prepare-your-direct-connection-string]

In this step, you'll use the [direct connection string](/postgres/database/connecting-to-your-database) you obtained in step 1 to connect to your Prisma Postgres instance.

Your direct connection string should look like this:

```text
postgres://USER:PASSWORD@db.prisma.io:5432/?sslmode=require
```

You'll use this connection string in the next step when configuring pgloader.

3. Migrate your MySQL data to Prisma Postgres using pgloader [#3-migrate-your-mysql-data-to-prisma-postgres-using-pgloader]

Now that you have an active connection to your Prisma Postgres instance, you'll use [pgloader](https://pgloader.io/) to export data from your MySQL database to Prisma Postgres.

Open a separate terminal window and create a `config.load` file:

```bash
touch config.load
```

Open the `config.load` file in your preferred text editor and copy-paste the following configuration:

```text title="config.load"
LOAD DATABASE
    FROM mysql://username:password@host:PORT/database_name
    INTO postgres://__USER__:__PASSWORD__@db.prisma.io:5432/?sslmode=require

WITH quote identifiers,    -- preserve table/column name case by quoting them
     include drop,
     create tables,
     create indexes,
     reset sequences

ALTER SCHEMA 'database_name' RENAME TO 'public';
```

Make sure to update the following details in the `config.load` file:

* `FROM` url (MySQL database URL):
  * Replace `username`, `password`, `host`, `PORT`, and `database_name` with the actual connection details for your MySQL database.
  * Ensure that your connection string includes `useSSL=true` if SSL is required, for example: `mysql://username:password@host:PORT/database_name?useSSL=true`. Note that when using PlanetScale, appending `sslaccept=strict` will not work.
* `INTO` url (Postgres database URL):
  * Update this with your direct connection string from above, replacing the `__USER__` and `__PASSWORD__` placeholders.
* Update the `database_name` in `ALTER SCHEMA 'database_name' RENAME TO 'public';` to exactly match the `database_name` in your MySQL connection string.

After saving the configuration file with your updated credentials, in the same terminal window, execute the following command:

```bash
pgloader config.load
```

You should see a log similar to this, which confirms the successful migration of your data:

```bash
LOG report summary reset
               table name     errors       rows      bytes      total time
-------------------------  ---------  ---------  ---------  --------------
          fetch meta data          0          9                     2.546s
           Create Schemas          0          0                     0.325s
         Create SQL Types          0          0                     0.635s
            Create tables          0          6                     5.695s
           Set Table OIDs          0          3                     0.328s
-------------------------  ---------  ---------  ---------  --------------
              public.post          0          8     0.5 kB          4.255s
            public."user"          0          4     0.1 kB          2.775s
public._prisma_migrations          0          1     0.2 kB          4.278s
-------------------------  ---------  ---------  ---------  --------------
  COPY Threads Completion          0          4                     5.095s
   Index Build Completion          0          5                     9.601s
           Create Indexes          0          5                     4.116s
          Reset Sequences          0          2                     4.540s
             Primary Keys          0          3                     2.917s
      Create Foreign Keys          0          1                     1.121s
          Create Triggers          0          0                     0.651s
         Install Comments          0          0                     0.000s
-------------------------  ---------  ---------  ---------  --------------
        Total import time          ✓         13     0.8 kB         28.042s
```

If you see output like this, it means your data has been successfully exported to your Prisma Postgres instance.

You can also use [Prisma Studio](/guides/postgres/viewing-data#viewing-and-editing-data-in-prisma-studio) to verify whether the migration was successful:

  

#### npm

```bash
npx prisma studio
```

#### pnpm

```bash
pnpm dlx prisma studio
```

#### yarn

```bash
yarn dlx prisma studio
```

#### bun

```bash
bunx --bun prisma studio
```

4. Configure your Prisma project for Prisma Postgres [#4-configure-your-prisma-project-for-prisma-postgres]

After migrating your data, you need to set up your Prisma project to work with Prisma Postgres. The steps differ depending on whether you were already using Prisma ORM.

If you were not previously using Prisma ORM [#if-you-were-not-previously-using-prisma-orm]

Initialize Prisma in your project by running `npx prisma init` in your project directory. This creates a `prisma` folder with a `schema.prisma` file and `.env` file (if not already present).

In the generated `.env` file, update `DATABASE_URL` to match your Prisma Postgres direct connection string that you received in [step 1](/prisma-postgres/import-from-existing-database-mysql#1-create-a-new-prisma-postgres-database):

```text title=".env" no-copy
DATABASE_URL="postgres://USER:PASSWORD@db.prisma.io:5432/?sslmode=require"
```

[Introspect](/orm/prisma-schema/introspection) your newly migrated database by running:

  

#### npm

```bash
npx prisma db pull
```

#### pnpm

```bash
pnpm dlx prisma db pull
```

#### yarn

```bash
yarn dlx prisma db pull
```

#### bun

```bash
bunx --bun prisma db pull
```

This command updates your `schema.prisma` file with models representing your migrated tables, so you can start using [Prisma Client](/orm/prisma-client/setup-and-configuration/introduction) to query your data or [Prisma Migrate](/orm/prisma-migrate/getting-started) to manage future changes.

Congratulations! You've successfully migrated your MySQL database to Prisma Postgres and configured your Prisma project. Your migration tutorial is now complete.

> [!NOTE]
> For a comprehensive guide on getting started with Prisma and Prisma Postgres, see [start from scratch with Prisma and Prisma Postgres](/prisma-orm/quickstart/prisma-postgres).

If you were already using Prisma ORM [#if-you-were-already-using-prisma-orm]

In your `schema.prisma` file, change the `provider` in the `datasource` block from `mysql` to `postgresql`:

```prisma title="schema.prisma"
datasource db {
  provider = "mysql" // [!code --]
  provider = "postgres" // [!code ++]
}
```

In the generated `.env` file, update `DATABASE_URL` to match your Prisma Postgres direct connection string that you received in [step 1](/prisma-postgres/import-from-existing-database-mysql#1-create-a-new-prisma-postgres-database):

```text title=".env" no-copy
DATABASE_URL="postgres://USER:PASSWORD@db.prisma.io:5432/?sslmode=require"
```

Introspect your newly migrated Prisma Postgres database and generate Prisma Client:

  

#### npm

```bash
npx prisma db pull
```

#### pnpm

```bash
pnpm dlx prisma db pull
```

#### yarn

```bash
yarn dlx prisma db pull
```

#### bun

```bash
bunx --bun prisma db pull
```

This command refreshes your Prisma models based on the new database schema.

If you were using [Prisma Migrate](/orm/prisma-migrate/getting-started) before:

* Delete your existing `migrations` folder in the `prisma` directory.
* [Baseline your database](/orm/prisma-migrate/workflows/baselining#baselining-a-database) to begin creating new migrations.

Congratulations! You've successfully migrated your MySQL database to Prisma Postgres and configured your Prisma project. Your migration tutorial is now complete.

If you encounter any issues during the migration, please don't hesitate to reach out to us on [Discord](https://pris.ly/discord?utm_source=docs\&utm_medium=conclusion) or via [X](https://pris.ly/x?utm_source=docs\&utm_medium=conclusion).

## Related pages

- [`From the CLI`](https://www.prisma.io/docs/prisma-postgres/from-the-cli): Start building a Prisma application with a Prisma Postgres database from the CLI
- [`Import from PostgreSQL`](https://www.prisma.io/docs/prisma-postgres/import-from-existing-database-postgresql): Learn how to import data from an existing PostgreSQL database into Prisma Postgres