JSONEachRow (NDJSON). يقرأ هذا التنسيق المفاتيح في كل سطر JSON باعتبارها أعمدة. على سبيل المثال:
قراءة JSON ككائن
JSONEachRow تنسيق JSON مفصول بأسطر جديدة، بحيث يُقرأ كل سطر ككائن منفصل يُربَط بصف في جدول، ويُربَط كل مفتاح بعمود. وهذا مثالي في الحالات التي تكون فيها بنية JSON معروفة ويكون لكل عمود نوع واحد فقط.
في المقابل، يتعامل JSONAsObject مع كل سطر على أنه كائن JSON واحد ويخزّنه في عمود واحد من النوع JSON، مما يجعله أنسب لحمولات JSON المتداخلة وللحالات التي تكون فيها المفاتيح ديناميكية وقد تحتمل أكثر من نوع واحد.
استخدم JSONEachRow لعمليات الإدراج على مستوى الصفوف، وJSONAsObject عند تخزين بيانات JSON مرنة أو ديناميكية.
قارن المثال أعلاه بالاستعلام التالي، الذي يقرأ البيانات نفسها على أنها كائن JSON واحد لكل سطر:
JSONAsObject مفيدًا لإدراج صفوف في جدول باستخدام عمود واحد من نوع كائن JSON، على سبيل المثال.
JSONAsObject مفيدًا أيضًا لقراءة JSON مفصول بأسطر جديدة في الحالات التي تكون فيها بنية الكائنات غير متسقة. على سبيل المثال، إذا كان نوع أحد المفاتيح يختلف بين الصفوف (فقد يكون أحيانًا سلسلة نصية، وفي أحيان أخرى كائنًا). في مثل هذه الحالات، لا يستطيع ClickHouse استنتاج مخطط ثابت باستخدام JSONEachRow، بينما يتيح JSONAsObject إدخال البيانات دون فرض قيود صارمة على الأنواع، مع تخزين كل صف JSON كاملًا في عمود واحد. على سبيل المثال، لاحظ كيف يفشل JSONEachRow في المثال التالي:
JSONAsObject في هذه الحالة، لأن النوع JSON يدعم أنواعًا متعددة للعمود الفرعي نفسه.
مصفوفة من كائنات JSON
JSONEachRow (لإدراج البيانات من ملف list.json):
مفاتيح كائنات JSON
JSONObjectEachRow:
تحديد قيم مفاتيح الكائن الأب
file():
id بقيم المفاتيح على نحو صحيح.
مصفوفات JSON
JSONCompactEachRow لهذا الغرض:
استيراد أعمدة منفردة من مصفوفات JSON
JSONColumns لتحليل البيانات المُنسَّقة كما يلي:
JSONCompactColumns:
حفظ كائنات JSON بدلًا من تحليلها
String واحد (أو JSON) بدلًا من تحليلها. وقد يكون ذلك مفيدًا عند التعامل مع قائمة من كائنات JSON ذات بُنى مختلفة. لنأخذ هذا الملف على سبيل المثال، حيث لدينا عدة كائنات JSON مختلفة داخل قائمة رئيسية:
JSONAsString للاحتفاظ بكائنات JSON بدلًا من تحليلها:
JSONAsString يعمل بكفاءة تامة في الحالات التي تكون فيها الملفات منسّقة بحيث يحتوي كل سطر على كائن JSON واحد (ويُستخدم ذلك عادةً مع التنسيق JSONEachRow).
مخطط الكائنات المتداخلة
Array، JSON أو Tuple) لتحميل البيانات:
الوصول إلى كائنات JSON المتداخلة
تجاهل الأعمدة غير المعروفة
month:
BSON
out.bson.