بينما على السطح، قد تبدو ازدواجية البيانات غير فعالة؛ يمكن أن يلعب أحيانًا دورًا حاسمًا للغاية في الحالات التي تحتاج فيها إلى الحصول على نسخة شبه دقيقة من نفس الجدول.
في SQL، يمكننا استخدام أساليب وتقنيات مختلفة لنسخ جدول موجود وجعل الجدول الجديد تحت اسم جديد ولكن بنفس البيانات. يمكن أن يكون هذا مفيدًا جدًا في مهام معينة مثل النسخ الاحتياطية، وتحويل البيانات، وتعديلات البيانات المؤقتة دون التأثير على الجدول الرئيسي، والمزيد.
في هذا الدليل، سوف نستكشف هذه الطرق ونتعلم كيف يمكننا نسخ جدول في قواعد بيانات SQL. نظرًا للاختلافات في كيفية تعامل محركات قاعدة بيانات SQL المختلفة مع نسخ الجدول، فإننا لن نغطي جميع الطرق لكل قاعدة بيانات.
سنحاول تغطية محرك واحد على الأقل لكل محرك قاعدة بيانات، كلما كان مدعومًا، لنوضح لك كيف يمكنك نسخ جدول لكل محرك قاعدة بيانات مدعوم.
الطريقة الأولى: عمومية (باستخدام بيان إنشاء جدول)
الطريقة الأكثر شيوعاً وبساطة لنسخ جدول هي استخدام عبارة CREATE TABLE.
على عكس عبارة CREATE TABLE العادية، فإننا نقوم بتمرير عبارة SELECT التي تحتوي على بنية الجدول المصدر وبياناته.
بناء الجملة هو كما يلي:
إنشاء جدول new_table AS
يختار * من مصدر_الجدول؛
يتيح لنا ذلك إنشاء جدول جديد بالاسم المحدد من الجدول المصدر.
خذ على سبيل المثال نموذج قاعدة بيانات Sakila. لنفترض أننا نريد إنشاء جدول مشابه لجدول الإيجارات.
يمكننا استخدام التقنية السابقة كما هو موضح في مثال الاستعلام التالي:
إنشاء جدول Rental_copy ASيختار * من الإيجار؛
من المفترض أن يؤدي ذلك إلى إنشاء جدول جديد يسمى 'rental_copy' والذي يحتوي على نفس البنية والبيانات الموجودة في جدول الإيجار.
يمكنك التحقق من خلال اختيار البيانات من الجدول كما يلي:
يختار * من Rental_copy؛
يجب أن يحتوي هذا على البيانات الدقيقة مثل جدول الإيجار.
الطريقة الثانية: عمومية (باستخدام عبارة INSERT INTO)
هناك طريقة أخرى مدعومة عالميًا بواسطة مجموعة واسعة من قواعد بيانات SQL وهي استخدام عبارة INSERT INTO.
تسمح لنا هذه التقنية بالنسخ من جدول إلى آخر. على عكس CREATE TABLE وSELECT، تسمح لنا هذه الطريقة بجلب البيانات بشكل انتقائي.
يكون هذا مفيدًا عندما نحتاج إلى مزيد من التحكم في عملية النسخ. يمكننا استخدام بناء الجملة كما هو موضح في ما يلي:
أدخل في target_table ( العمود 1، العمود 2، ... )حدد العمود 1، العمود 2، ...
من مصدر_الجدول؛
في هذه الحالة، يمكننا تحديد الأعمدة التي نرغب في تضمينها في الجدول الجديد دون جلب كل شيء من الجدول الأصلي.
خذ الاستعلام التالي على سبيل المثال:
إدراجداخل
rent_copy ( معرف الإيجار،
تاريخ الإيجار،
تاريخ العودة )
يختار
معرف الإيجار،
تاريخ الإيجار،
تاريخ العودة
من
تأجير ص؛
أحد عيوب هذه الطريقة هو أنها قد تتطلب منك إنشاء جدول مشابه بالأعمدة التي ترغب في تضمينها. يمكن أن يكون هذا متكررًا وفعالًا عند العمل مع مجموعة بيانات كبيرة.
الطريقة الثالثة: نسخ بنية الجدول
وفي حالات أخرى، قد تصادف حالات تكون فيها مهتمًا ببنية الجدول دون الحاجة إلى البيانات المخزنة في الجدول.
في مثل هذا السيناريو، يمكنك استخدام عبارة CREATE TABLE بالتزامن مع عبارة LIKE كما يلي:
إنشاء جدول new_table ( إعجاب بـ source_table ) ;
يجب أن يؤدي هذا إلى إنشاء جدول جديد بالاسم المحدد وبنية مشابهة مثل 'source_table' دون نسخ البيانات فعليًا.
نسخ الجداول بين قواعد البيانات
لنسخ الجداول بين قواعد بيانات مختلفة، يمكننا تصدير البيانات من قاعدة البيانات المصدر واستيرادها إلى قاعدة البيانات الهدف.
يتضمن هذا عادةً استخدام التنسيقات المستندة إلى الملفات مثل CSV أو الأدوات الخاصة بقاعدة البيانات. يمكنك الرجوع إلى الوثائق الخاصة بقاعدة البيانات الخاصة بك حول كيفية تحقيق ذلك لأنها قد تختلف اعتمادًا على محرك قاعدة البيانات.
الطريقة الرابعة: استخدام الخوادم المرتبطة (SQL Server)
في SQL Server، يمكننا نسخ الجداول بين قواعد البيانات باستخدام الخوادم المرتبطة.
تسمح لنا الخوادم المرتبطة بإنشاء اتصال بقاعدة بيانات بعيدة والاستعلام عن البيانات أو نقلها فيما بينها.
بناء الجملة هو كما يلي:
ادخل في [ اسم الخادم المرتبط ] . [ اسم قاعدة البيانات ] . [ اسم المخطط ] . [ target_table ]يختار * من مصدر_الجدول؛
وهذا يتيح الاتصال عن بعد ونقل البيانات بين الخوادم البعيدة.
خاتمة
في هذا البرنامج التعليمي، تعلمنا كيفية استخدام أساليب وتقنيات مختلفة لنسخ جدول في SQL والعمل معها.