SQL’den JSON’a Dönüştürücü
INSERT ifadelerini veya bir result set’i yapıştırın. Size bir JSON dizisi dönelim.
Bu araç ne yapıyor
Bir migration’dan ya da bir pg_dump çıktısından bir sürü INSERT ifadesi çekip bunu bir API seed’i ya da fixture için JSON olarak istediğiniz oldu mu — bu araç tek yapıştırmada halleder. Sadece SELECT ... FOR JSON ile çıkartmak için dump’ı bir veritabanına yüklemeye gerek yok.
Araç, INSERT INTO table (col, col, ...) VALUES (...) ifadelerini — multi-row INSERT’ler dahil — okur ve her satırın kolon adlarıyla anahtarlanan bir JSON nesnesi olduğu bir JSON dizisi üretir. ISO SQL’in kapsadığı standart lehçeyi ve PostgreSQL, MySQL, SQLite ve SQL Server’daki yaygın varyantları destekler.
Değerler beklediğiniz şekilde tiplenir: integer ve decimal literal’lar number olarak kalır, tırnak içindeki string’ler string olarak kalır, NULL JSON’da null’a, TRUE/FALSE boolean’a dönüşür. Tarih/saat literal’ları ('2024-01-15', '2024-01-15 10:30:00') ISO-8601 string’i olarak çıkar. Birden fazla INSERT’i farklı tablolara yapıştırırsanız, her tablo çıktıda kendi anahtarını alır, satırlar da altında JSON dizisi olarak durur.
Nasıl kullanılır
Üç adım. Üç satır da yapıştırsanız üç bin de, aynı şekilde çalışıyor.
SQL’inizi yapıştırın (ya da örneği deneyin)
Soldaki editöre INSERT ifadelerinizi bırakın. Tek INSERT, multi-row INSERT ya da farklı tablolara birden fazla INSERT — hepsi sorunsuz. Gerçekçi bir orders-ve-items örneği görmek için Örneği Yükle’a tıklayın.
SQL’i olduğu gibi bırakın — sondaki noktalı virgüller, satır içi yorumlar (-- ya da /* ... */) ve şema önekleri (public.orders) sorunsuz parse edilir.
Dönüştür’e basın
Yeşil Dönüştür düğmesine tıklayın. Araç her INSERT’i okur, değerleri kolon adlarıyla eşler ve JSON’u tek geçişte oluşturur.
JSON’u kopyalayın
Sağ panel bir JSON dizisi gösterir (multi-tablo dump’larında ise dizi değerli bir nesne). Bir API seed’inin içine, bir Jest fixture’ına ya da statik bir mock server’a doğrudan bırakın.
Ne zaman gerçekten işe yarıyor
Mevcut bir dump’tan seed üretme
Elinizde bir <code>mysqldump</code> veya <code>pg_dump</code> dosyası var ve eski DB’yle doğrudan konuşmayan yeni bir uygulama için JSON seed verisi istiyorsunuz. INSERT’leri yapıştırın, JSON’u alın.
Test fixture’ları hazırlamak
Production’dan (hassas olan her şey hariç) birkaç satırı INSERT ifadesi olarak alın ve entegrasyon testleri ya da Storybook mock’ları için JSON fixture’larına dönüştürün.
API seed dosyaları
Yeni bir mikroservis JSON ile seed edilmeyi bekliyor, ama veri monorepo’da SQL insert’leri olarak duruyor. Tek yapıştırma ile seed dosyası elinizde.
Front-end ekibine veri göndermek
Front-end ekibi yeni bir ekran için örnek veri istiyor. SQL sizde hazır. JSON’a çevirip bir mock yanıt olarak onların repo’suna bırakın.
Sık sorulanlar
Hangi SQL lehçelerini destekliyor?
Ortak alt küme: PostgreSQL, MySQL/MariaDB, SQLite ve SQL Server INSERT sözdizimi. PostgreSQL’in E'...' escape’leri ya da MySQL’in backtick’li tanımlayıcıları gibi lehçeye özgü detaylar da ele alınır.
Multi-row INSERT’leri destekliyor mu?
Evet — INSERT INTO orders (id, total) VALUES (1, 9.99), (2, 15.50), (3, 42.00); her satır için bir nesne olacak şekilde üç elemanlı bir JSON dizisi olarak çıkar.
Peki birden fazla tabloya INSERT’lerde ne oluyor?
Her tablo çıktı JSON’da kendi anahtarına sahip olur ve satırlar JSON dizisi olarak altında durur. Yani orders ve order_items’a insert eden bir migration size {"orders": [...], "order_items": [...]} verir — ilişkisel yapıyı koruması gereken seed dosyaları için çok kullanışlı.
NULL, tarih ve boolean’lar nasıl ele alınıyor?
NULL JSON’da null’a dönüşür. TRUE/FALSE (şema çıkarsanamıyorsa 0/1) sırasıyla JSON boolean veya number olur. Tarih literal’ları RFC 3339’a uygun ISO-8601 string’leri olarak çıkar.
SQL’i çalıştırıyor mu?
Hayır — hiçbir şey veritabanına karşı çalıştırılmıyor. Araç yalnızca INSERT sözdizimini parse edip JSON üretir. Verileriniz dönüştürme isteğinin dışına çıkmaz.
SELECT result set’leri için ne olacak?
Formatlanmış bir result set’i (kolon başlıkları ve satırlar) yapıştırın, araç elinden geleni yapıp bir JSON dizisi üretmeye çalışır. INSERT sözdizimi daha güvenilirdir çünkü kolon adları açıktır — mümkünse INSERT’leri tercih edin.
İhtiyacınız olabilecek diğer araçlar
SQL’den JSON’a, alet çantasının geri kalanıyla iyi uyuşuyor: