الانتقال إلى المحتوى الرئيسي
إدخالإخراجاسم بديل

الوصف

يحلّل التنسيق BSONEachRow البيانات على هيئة تسلسل من مستندات Binary JSON ‏(BSON) من دون أي فاصل بينها. يُنسَّق كل صف على شكل مستند واحد، ويُنسَّق كل عمود كحقل واحد في مستند BSON، بحيث يكون اسم العمود هو المفتاح.

مطابقة أنواع البيانات

في الإخراج، تُستخدم المطابقة التالية بين أنواع ClickHouse وأنواع BSON:
نوع ClickHouseنوع BSON
Bool\x08 boolean
Int8/UInt8/Enum8\x10 int32
Int16/UInt16/Enum16\x10 int32
Int32\x10 int32
UInt32\x12 int64
Int64/UInt64\x12 int64
Float32/Float64\x01 double
Date/Date32\x10 int32
DateTime\x12 int64
DateTime64\x09 datetime
Decimal32\x10 int32
Decimal64\x12 int64
Decimal128\x05 binary, \x00 binary subtype, الحجم = 16
Decimal256\x05 binary, \x00 binary subtype, الحجم = 32
Int128/UInt128\x05 binary, \x00 binary subtype, الحجم = 16
Int256/UInt256\x05 binary, \x00 binary subtype, الحجم = 32
String/FixedString\x05 binary, \x00 binary subtype أو \x02 string إذا كان الإعداد output_format_bson_string_as_string ممكّنًا
UUID\x05 binary, \x04 uuid subtype, الحجم = 16
Array\x04 array
Tuple\x04 array
Named Tuple\x03 document
Map\x03 document
IPv4\x10 int32
IPv6\x05 binary, \x00 binary subtype
في الإدخال، تُستخدم المطابقة التالية بين أنواع BSON وأنواع ClickHouse:
نوع BSONنوع ClickHouse
\x01 doubleFloat32/Float64
\x02 stringString/FixedString
\x03 مستندMap/Named Tuple
\x04 مصفوفةArray/Tuple
\x05 binary, \x00 النوع الفرعي الثنائيString/FixedString/IPv6
\x05 binary, \x02 النوع الفرعي الثنائي القديمString/FixedString
\x05 binary, \x03 النوع الفرعي القديم uuidUUID
\x05 binary, \x04 النوع الفرعي uuidUUID
\x07 ObjectIdString/FixedString
\x08 booleanBool
\x09 datetimeDateTime64
\x0A قيمة NULLNULL
\x0D JavaScript codeString/FixedString
\x0E symbolString/FixedString
\x10 int32Int32/UInt32/Decimal32/IPv4/Enum8/Enum16
\x12 int64Int64/UInt64/Decimal64/DateTime64
أنواع BSON الأخرى غير مدعومة. بالإضافة إلى ذلك، يُجري هذا التنسيق تحويلًا بين الأنواع الصحيحة المختلفة. فعلى سبيل المثال، يمكن إدراج قيمة BSON من النوع int32 في ClickHouse بصفتها UInt8. يمكن تحليل الأعداد الصحيحة الكبيرة والقيم العشرية مثل Int128/UInt128/Int256/UInt256/Decimal128/Decimal256 من قيمة BSON من نوع Binary ذات النوع الفرعي الثنائي \x00. في هذه الحالة، سيتحقق التنسيق من أن حجم البيانات الثنائية يساوي حجم القيمة المتوقعة.
لا يعمل هذا التنسيق بشكل صحيح على المنصات ذات ترتيب البايتات Big-Endian.

مثال للاستخدام

إدراج البيانات

باستخدام ملف BSON باسم football.bson ويحتوي على البيانات التالية:
    ┌───────date─┬─season─┬─home_team─────────────┬─away_team───────────┬─home_team_goals─┬─away_team_goals─┐
 1. │ 2022-04-30 │   2021 │ Sutton United         │ Bradford City       │               1 │               4 │
 2. │ 2022-04-30 │   2021 │ Swindon Town          │ Barrow              │               2 │               1 │
 3. │ 2022-04-30 │   2021 │ Tranmere Rovers       │ Oldham Athletic     │               2 │               0 │
 4. │ 2022-05-02 │   2021 │ Port Vale             │ Newport County      │               1 │               2 │
 5. │ 2022-05-02 │   2021 │ Salford City          │ Mansfield Town      │               2 │               2 │
 6. │ 2022-05-07 │   2021 │ Barrow                │ Northampton Town    │               1 │               3 │
 7. │ 2022-05-07 │   2021 │ Bradford City         │ Carlisle United     │               2 │               0 │
 8. │ 2022-05-07 │   2021 │ Bristol Rovers        │ Scunthorpe United   │               7 │               0 │
 9. │ 2022-05-07 │   2021 │ Exeter City           │ Port Vale           │               0 │               1 │
10. │ 2022-05-07 │   2021 │ Harrogate Town A.F.C. │ Sutton United       │               0 │               2 │
11. │ 2022-05-07 │   2021 │ Hartlepool United     │ Colchester United   │               0 │               2 │
12. │ 2022-05-07 │   2021 │ Leyton Orient         │ Tranmere Rovers     │               0 │               1 │
13. │ 2022-05-07 │   2021 │ Mansfield Town        │ Forest Green Rovers │               2 │               2 │
14. │ 2022-05-07 │   2021 │ Newport County        │ Rochdale            │               0 │               2 │
15. │ 2022-05-07 │   2021 │ Oldham Athletic       │ Crawley Town        │               3 │               3 │
16. │ 2022-05-07 │   2021 │ Stevenage Borough     │ Salford City        │               4 │               2 │
17. │ 2022-05-07 │   2021 │ Walsall               │ Swindon Town        │               0 │               3 │
    └────────────┴────────┴───────────────────────┴─────────────────────┴─────────────────┴─────────────────┘
أدرِج البيانات:
INSERT INTO football FROM INFILE 'football.bson' FORMAT BSONEachRow;

قراءة البيانات

اقرأ البيانات بتنسيق BSONEachRow:
SELECT *
FROM football INTO OUTFILE 'docs_data/bson/football.bson'
FORMAT BSONEachRow
BSON هو تنسيق ثنائي لا يُعرض في الطرفية بصيغة مقروءة للبشر. استخدم INTO OUTFILE لإخراج ملفات BSON.

إعدادات التنسيق

الإعدادالوصفالافتراضي
output_format_bson_string_as_stringاستخدم النوع BSON String بدلاً من Binary في أعمدة String.false
input_format_bson_skip_fields_with_unsupported_types_in_schema_inferenceاسمح بتخطي الأعمدة ذات الأنواع غير المدعومة أثناء استدلال المخطط للصيغة BSONEachRow.false
آخر تعديل في ٢٥ يونيو ٢٠٢٦