يدعم ClickHouse قراءة ملفات تفريغ الخاصة بـ MySQL.
يقرأ جميع البيانات من استعلامات INSERT التابعة لجدول واحد ضمن ملف التفريغ.
إذا كان هناك أكثر من جدول، فسيقرأ البيانات من الجدول الأول افتراضيًا.
تدعم هذه الصيغة استنتاج المخطط تلقائيًا: إذا كان ملف التفريغ يحتوي على استعلام CREATE للجدول المحدد، فسيتم استنتاج البنية منه، وإلا فسيتم استنتاج المخطط من بيانات استعلامات INSERT.
لنفترض وجود ملف تفريغ SQL التالي:
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `test` (
`x` int DEFAULT NULL,
`y` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
INSERT INTO `test` VALUES (1,NULL),(2,NULL),(3,NULL),(3,NULL),(4,NULL),(5,NULL),(6,7);
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `test 3` (
`y` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
INSERT INTO `test 3` VALUES (1);
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `test2` (
`x` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
INSERT INTO `test2` VALUES (1),(2),(3);
يمكننا تنفيذ الاستعلامات التالية:
DESCRIBE TABLE file(dump.sql, MySQLDump)
SETTINGS input_format_mysql_dump_table_name = 'test2'
┌─name─┬─type────────────┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
│ x │ Nullable(Int32) │ │ │ │ │ │
└──────┴─────────────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘
SELECT *
FROM file(dump.sql, MySQLDump)
SETTINGS input_format_mysql_dump_table_name = 'test2'
┌─x─┐
│ 1 │
│ 2 │
│ 3 │
└───┘
يمكنك تحديد اسم الجدول الذي ستُقرأ منه البيانات باستخدام الإعداد input_format_mysql_dump_table_name.
إذا كان الإعداد input_format_mysql_dump_map_columns مضبوطًا على 1 وكان ملف التفريغ يتضمن استعلام CREATE للجدول المحدد أو أسماء أعمدة في استعلام INSERT، فستُطابَق أعمدة بيانات الإدخال مع أعمدة الجدول حسب الاسم.
سيتم تخطي الأعمدة ذات الأسماء غير المعروفة إذا كان الإعداد input_format_skip_unknown_fields مضبوطًا على 1.