input(structure) - دالة جدول تتيح تحويل البيانات المُرسلة إلى
الخادم ببنية محددة وإدراجها بكفاءة في جدول ذي بنية مختلفة.
structure - بنية البيانات المُرسلة إلى الخادم بالتنسيق التالي 'column1_name column1_type, column2_name column2_type, ...'.
على سبيل المثال: 'id UInt32, name String'.
لا يمكن استخدام هذه الدالة إلا في استعلام INSERT SELECT، ولمرة واحدة فقط، لكنها بخلاف ذلك تتصرف مثل أي دالة جدول عادية
(فعلى سبيل المثال، يمكن استخدامها في استعلام فرعي، وما إلى ذلك).
يمكن إرسال البيانات بأي طريقة كما هو الحال في استعلام INSERT العادي، وتمريرها بأي تنسيق متاح،
على أن يُحدَّد في نهاية الاستعلام (على خلاف INSERT SELECT العادي).
الميزة الرئيسية لهذه الدالة هي أنه عندما يتلقى الخادم البيانات من العميل، فإنه يحولها في الوقت نفسه
وفقًا لقائمة التعبيرات في عبارة SELECT ويدرجها في الجدول الهدف. ولا يُنشأ جدول مؤقت
يحتوي على جميع البيانات المنقولة.
أمثلة
- لنفترض أن لجدول
testالبنية التالية(a String, b String)وأن البيانات فيdata.csvلها بنية مختلفة(col1 String, col2 Date, col3 Int32). يكون استعلام إدراج البيانات منdata.csvإلى جدولtestمع التحويل المتزامن كما يلي:
- إذا كان الملف
data.csvيحتوي على بيانات لها البنية نفسهاtest_structureمثل الجدولtest، فهذان الاستعلامان متكافئان: