كيف يُعيَّن JSON إلى جداول علائقية
يُعيَّن مصفوف JSON من الكائنات بشكل طبيعي إلى جدول علائقي: يصبح كل كائن صفًا وكل مفتاح فريد عمودًا. يفحص المحوّل كل كائن في المصفوفة لاكتشاف جميع المفاتيح المميزة ثم يُنشئ جملة CREATE TABLE تغطي أعمدتها الاتحاد الكامل للمفاتيح الموجودة.
يقرأ استنتاج الأنواع قيم JSON: تصبح السلاسل VARCHAR أو TEXT، والأرقام INT أو FLOAT بحسب وجود نقطة عشرية، والقيم المنطقية TINYINT(1) أو BOOLEAN، وتُعلَّم قيم null بأنها قابلة للقيمة الفارغة. تُسلسَل الكائنات أو المصفوفات المتداخلة في عمود JSON لضمان عدم فقدان أي بيانات.
إذا كان جذر JSON كائنًا واحدًا بدلًا من مصفوفة، يلفّه المحوّل تلقائيًا في مصفوفة ويولّد صف INSERT واحد، مما يتيح تحويل أي شكل JSON دون معالجة مسبقة.
اختلافات اللهجات والخيارات
يستخدم MySQL علامات الاقتباس الخلفية وTINYINT(1) للقيم المنطقية. يستخدم PostgreSQL علامات الاقتباس المزدوجة وNOOLEAN الأصلية وSERIAL للزيادة التلقائية. يستخدم SQLite الكتابة الديناميكية بتقارب TEXT/INTEGER/REAL/NUMERIC. يستخدم SQL Server الأقواس المربعة وBIT للقيم المنطقية. اختر قاعدة البيانات المستهدفة من قائمة اللهجة قبل التوليد.
اسم الجدول الافتراضي هو "data" لكن يمكن تخصيصه. يمكنك اختيار إنتاج جمل INSERT فقط (مفيد عندما يوجد الجدول مسبقًا) أو DDL CREATE TABLE فقط أو كليهما معًا. يدعم وضع INSERT بناء جملة قيم متعددة الصفوف للقواعد التي تدعمها أو INSERT منفردة لأقصى توافقية.
تُهرَّب قيم السلاسل تلقائيًا: تُضاعَف علامات الاقتباس المفردة وتُعالَج تسلسلات الشرطة المائلة العكسية وفق اللهجة. تُنتَج القيم العددية والمنطقية بدون اقتباسات. تُعيَّن قيم JSON null إلى SQL NULL.
حالات استخدام عملية
يُعدّ تعبئة قاعدة بيانات التطوير من ملف JSON للبيانات الثابتة من أكثر مسارات العمل شيوعًا. صدّر البيانات من واجهة برمجية، الصق JSON واحصل على جمل INSERT يمكنك تشغيلها مباشرة في عميل SQL أو تضمينها في نص ترحيل.
غالبًا ما تنطوي مشاريع ترحيل البيانات على نقل السجلات بين الأنظمة. يتيح تحويل تصدير JSON لنظام ما إلى SQL استيراده في قاعدة بيانات علائقية دون كتابة كود ETL مخصص.
اكتشاف المخطط فائدة أخرى: يمنحك CREATE TABLE المولّد تلقائيًا مسودة أولى للمخطط من بيانات حقيقية يمكنك تحسينها بمفاتيح أساسية وفهارس وقيود مناسبة قبل تطبيقها في الإنتاج.