# Migrating JSONB columns in Go

DevFeed: [Migrating JSONB columns in Go](<https://devfeed.tech/articles/migrating-jsonb-columns-in-go-11876.md>)

Original publisher: [Read original article](<https://incident.io/blog/migrating-jsonb-columns-in-go>)

Author: Louis Heath

Published: 2024-07-11T16:55:00Z

Content type: article

Language: en

Sources: [The incident.io Blog](<https://devfeed.tech/sources/the-incident-io-blog.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [migration](<https://devfeed.tech/topics/migration.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Front end](<https://devfeed.tech/topics/frontend.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [database](<https://devfeed.tech/tags/database.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [go](<https://devfeed.tech/tags/go.md>), [incident](<https://devfeed.tech/tags/incident.md>), [incident-channel](<https://devfeed.tech/tags/incident-channel.md>), [incident-management](<https://devfeed.tech/tags/incident-management.md>), [incident-response](<https://devfeed.tech/tags/incident-response.md>), [json](<https://devfeed.tech/tags/json.md>), [migration](<https://devfeed.tech/tags/migration.md>), [outage](<https://devfeed.tech/tags/outage.md>), [post-mortem](<https://devfeed.tech/tags/post-mortem.md>), [slack-incident](<https://devfeed.tech/tags/slack-incident.md>), [sql](<https://devfeed.tech/tags/sql.md>)

## AI overview

This article explains how to migrate JSONB columns in Go while safely supporting old and new data formats. It describes custom sql.Scanner and driver.Valuer implementations, asynchronous backfilling, batch updates, and a temporary indexed column to unify the data before removing the migration-specific scanner.

## Source excerpt

JSON columns can be challenging to change. Here's how we do it in Go.