🍆

SupabaseのDBをCSVでダウンロードすると、json型データがObjectになってしまう件の解決策

2022/12/12に公開

Supabaseでは、テーブルの中身をCSV形式でダウンロードできます。

とても便利な機能なのですが、ちょっと問題があります。

JSON型のデータが全てこんな感じで Object と書き出されてしまうのです。

これでは使い物になりませんので対策が必要です。

SQL Editor でこんな感じに書くと JSON型のデータがちゃんと中身を参照できる形になります。

select REGEXP_REPLACE(REGEXP_REPLACE(jsonb_pretty(the_patterns), '\r|\n|\r\n| ', '','g'), '"', '""', 'g') as the_patterns from all_patterns;

※ all_patternsという名前のテーブルから the_patterns というカラムを取得する例。jsonb_prettyでJSON型をjsonb型に変換し、不要な改行コードやインデント、 """ に置換で削除したり追記したりします。selectのカラム名を元に戻すために as the_patterns で名前を元通りにします。

ちょっと面倒ですが、こんな感じにすると、無事に CSV ファイルでも JSON型のデータを展開して自由に使えるようになりました!

この記事が未来の自分および誰かの参考になれば幸いです。


PosgreSQLよわよわマンなので jsonb_pretty を使いましたが、もっと簡単な方法があれば教えて欲しいです!


Supabaseのissuesでもこの問題に遭遇している方がいたので他の方も困っていそうなので DeepL翻訳 純度100%で回答を投げました。

https://github.com/supabase/supabase/issues/8489#issuecomment-1345611466

Discussion