في هذا الدرس سوف نتطرق إلى استخدام عبارتين بشكل مزدوج وهي عبارة TOP مع عبارة INTO مع عبارة SELECT .
كما يلي
SELECT TOP 1000 * INTO TABLE2 FROM TABLE1
١- سوف يقوم بتنفيذ استعلام SELECT على الجدول الأول TABLE1 لاستعادة اول ١٠٠٠ سطر من الجدول TABLE1 و كل حقول هذا الجدول وذلك لأننا استخدمنا * .
٢- سوف يقوم بتكوين جدول جديد بأسم TABLE2 ويكون تكوين هذا الجدول من ناحية أسماء الحقول ونوع البيانات صورة طبق الأصل من الجدول TABLE1.
٣- سوف يقوم بعملية نسخ البيانات (١٠٠٠ سطر) التي استعادها من عبارة SELECT ويقوم بخزن هذه الصفوف في الجدول الجديد TABLE2.
يمكن استخدام هذه الصيغة SELECT TOP INTO في تنفيذ بعض المهام . مثلا اذا كان TABLE1 يحتوي على ٣ ملايين سطر ونريد استخراج البيانات وخزنها في ملف اكسل. سوف نواجه مشكلة وهي ان ملف الاكسل يستطيع أن يخزن فقط مليون و ٢٠٠ ألف سطر تقريبا . لذا في هذه الحالة يجب أن نستخرج البيانات ونوزعها على ثلاث ملفات اكسل وفي كل ملف نضع مليون سطر. والقيام بذلك نحتاج إلى توزيع البيانات المخزنة في الجدول TABLE1 على ثلاث جداول و في كل جدول نضع مليون سطر فقط . ثم نقوم باستخراج البيانات من الجداول الثلاثة و وخزنها في ثلاثة ملفات اكسل.
يمكن أن توزع ٣ ملايين سطر من الجدولTABLE 1 كما يلي
نفرض ان الجدول TABLE1 لا يحتوي على حقل فريد او اي مفتاح أساسي لذا الخطوة الأولى هي ان نضيف حقل ذو قيمة فريدة UNIQUE إلى الجدول TABLE1 عن طريق استخدام محدد القيمة الفريدة وكما يلي
ALTER TABLE TABLE1 ADD ID INT IDENTITY (1,1)
تعمل العبارة السابقة على إضافة حقل اسمه ID إلى الجدول TABLE1 وهذا الحقل سوف يحتوي على قيم فريدة من ١ الى ٣ ملايين . مثلا في السطر الأول تكون قيمة الحقل ID هي ١ وفي السطر الثاني قيمة ID هي ٢ وهكذا في السطر الاخير تكون قيمة الحقل هي ٣٠٠٠٠٠٠
ثم ننفذ العبارات التالية بالتسلسل
SELECT TOP 1000000 * INTO TABLE2 FROM TABLE1
SELECT TOP 1000000 * INTO TABLE3 FROM TABLE1 WHERE ID NOT IN ( SELECT ID FROM TABLE2)
SELECT TOP 1000000 * INTO TABLE4 FROM TABLE1 WHERE ID NOT IN ( SELECT ID FROM TABLE2 UNION SELECT ID FROM TABLE3)
تعمل العبارات الثلاث السابقة على تنفيذ المهام التالية
اولا العبارة الأولى سوف تأخذ اول مليون سطر من الجدول TABLE1 وتخزينها في جدول TABLE2.
أما العبارة الثانية فسوف تأخذ ثاني مليون سطر من الجدول TABLE1 وتخزينها في جدول TABLE3 . حيث سوف يقوم النظام باختيار الأسطر التي تكون فيها قيمة ID غير موجودة في الجدول TABLE2 وهي الأسطر من 1000001 الى 2000000 لان الجدول TABLE2 يحتوي على مليون سطر وآخر قيمة في حقل ID له هي 1000000
أما العبارة الثالثة فسوف تأخذ ثالث مليون سطر من الجدول TABLE1 وتخزينها في الجدول TABLE4
حيث سوف يقوم النظام باختيار الأسطر التي تكون فيها قيمة ID غير موجودة في الجدول TABLE2 و الجدول TABLE3 وهي الأسطر من 2000001 الى 3000000 لان الجدول TABLE2 يحتوي على مليون سطر وآخر قيمة في حقل ID له هي 1000000 والجدول TABLE3 يحتوي على مليون سطر وآخر قيمة في حقل ID له هي 2000000 .
الان وبعدما قسمنا الأسطر على ثلاث جداول TABLE2 و TABLE3 و TABLE4 يمكن بسهولة استخراج البيانات وتوزيعها على ثلاث ملفات اكسل.
ليست هناك تعليقات:
إرسال تعليق