.SQL SQL Script
.sql

SQL Script

ملف .sql هو تفريغ قاعدة بيانات بنص عادي — لقطة من الجداول والصفوف وتعريفات المخطط المُصدّرة بواسطة mysqldump أو pg_dump أو sqlite3 .dump. فتحه في محرر نصوص يعرض تعليمات SQL الخام، واستيراده في محرك قاعدة البيانات المطابق يُعيد إنشاء قاعدة البيانات الأصلية.

بنية الصيغة
-- ترويسة التعليقات
SET — تكوين الجلسة
CREATE TABLE — المخطط
INSERT/COPY — البيانات
نصISO 90751974
غير قابل للتحويل

التحويل غير متاح حالياً. ملفات تفريغ SQL تحتوي لهجات خاصة بقواعد بيانات تتطلب محللاً لكل محرك.

أسئلة شائعة

ما هو ملف .sql وكيف أفتحه؟

ملف .sql هو تفريغ قاعدة بيانات بنص عادي يحتوي تعليمات SQL تُعيد إنشاء الجداول والبيانات عند استيرادها في محرك قاعدة بيانات. افتحه في أي محرر نصوص (Notepad++ أو VS Code أو nano) لقراءة SQL الخام. لاستخدامه فعلياً، استورده في قاعدة البيانات المطابقة: mysql لتفريغات MySQL وpsql لتفريغات PostgreSQL وsqlite3 لتفريغات SQLite. تعليقات ترويسة الملف تُعرّف الأداة التي أنشأته.

كيف أستورد ملف .sql في قاعدة بياناتي؟

لـ MySQL: mysql -u root -p database_name < dump.sql. لـ PostgreSQL: psql -U postgres -d database_name -f dump.sql. لـ SQLite: sqlite3 database.db < dump.sql. يجب أن تكون قاعدة البيانات الهدف موجودة قبل الاستيراد. phpMyAdmin أيضاً يقبل رفع ملفات .sql عبر تبويب الاستيراد.

هل من الآمن تشغيل ملف .sql تلقيته من مصدر خارجي؟

ليس بدون فحص. ملفات تفريغ SQL يمكنها احتواء تعليمات تدميرية مثل DROP DATABASE وتصعيد صلاحيات عبر GRANT وتسريب بيانات عبر INTO OUTFILE. افحص دائماً تفريغاً غير موثوق بـ head وgrep للكلمات المفتاحية الخطيرة قبل الاستيراد. لا تستورد أبداً بحساب مدير عندما يكفي حساب محدود الصلاحيات.

لماذا يفشل تفريغ MySQL عند استيراده في PostgreSQL؟

MySQL وPostgreSQL يستخدمان لهجات SQL غير متوافقة. مخرجات mysqldump تحتوي اقتباس backtick وAUTO_INCREMENT وENGINE=InnoDB وتعليقات شرطية خاصة بـ MySQL يرفضها PostgreSQL كأخطاء نحوية. استخدم pgloader للترحيل الآلي من MySQL إلى PostgreSQL أو mysql2sqlite لأهداف SQLite.

كيف أعرف أي أداة قاعدة بيانات أنشأت ملف .sql؟

تحقق من أول 20 سطراً. ملفات mysqldump تبدأ بـ -- MySQL dump وإصدار الخادم. ملفات pg_dump تبدأ بـ -- PostgreSQL database dump. ملفات sqlite3 .dump تفتتح بـ BEGIN TRANSACTION يليها مباشرةً تعليمات CREATE TABLE. تفريغات phpMyAdmin تتضمن -- phpMyAdmin SQL Dump في الترويسة.

ما الفرق بين ملف تفريغ .sql ولغة SQL؟

SQL لغة استعلام مُعرّفة بمعيار ISO 9075 للتعامل مع قواعد البيانات العلائقية. ملف تفريغ .sql أداة تصدير مُحددة — ملف نصي يحتوي تعليمات SQL أنتجتها أداة نسخ احتياطي. الملف يستخدم اللغة، لكن اللغة موجودة مستقلة عن أي ملف.

كيف أتعامل مع ملف .sql كبير جداً لا يمكن فتحه في محرر نصوص؟

استخدم أدوات سطر الأوامر: wc -l dump.sql يحسب الأسطر، وhead -50 dump.sql يعرض معاينة الترويسة، وsplit -l 100000 dump.sql chunk_ يُقسّمه لملفات أصغر. للاستيراد، وجّه مباشرةً لعميل قاعدة البيانات دون فتح الملف: mysql -u root -p db < dump.sql يتعامل مع ملفات بالغيغابايت دون تحميلها في الذاكرة.

ما يميز .SQL

ثورة كود
ورقة واحدة عام 1970 أزاحت جميع نماذج قواعد البيانات السابقة
ورقة إدغار كود عن النموذج العلائقي في IBM قدّمت عمليات نظرية المجموعات للبيانات. خلال عقد، أزاحت النماذج الهرمية والشبكية التي باعتها IBM نفسها، وكل قاعدة بيانات حديثة تنحدر من جبره.
OWASP #1 لسنوات
حقن SQL كان الثغرة الأولى في الويب
حقن SQL هيمن على قائمة OWASP لأخطر 10 ثغرات لأكثر من عقد. في تقييم 2021، أظهرت 94% من التطبيقات المفحوصة شكلاً من ثغرات الحقن مع 274,000 حالة. RFC 6922 يُحذّر أن ملفات .sql 'لغة برمجة كاملة' ويجب تبادلها فقط بين أطراف موثوقة.
فوضى اللهجات
مخرجات mysqldump تفشل على PostgreSQL والعكس
رغم تعريف ISO 9075 للغة SQL معيارية، MySQL يستخدم اقتباس backtick وAUTO_INCREMENT بينما PostgreSQL يستخدم اقتباساً مزدوجاً وSERIAL. pg_dump يستخدم COPY بدلاً من INSERT. لا مخرجات أداة تفريغ تُستورد في محرك آخر دون تحويل.
ملف phpMyAdmin
35% من ملفات .sql هي تصديرات phpMyAdmin
السيناريو الأكثر شيوعاً لمصادفة ملف .sql هو نسخة احتياطية WordPress من استضافة مشتركة. تصدير SQL من phpMyAdmin هو أسلوب النسخ الاحتياطي الافتراضي لملايين المواقع الصغيرة التي تعمل على cPanel مع MySQL.

ما وراء الامتداد

على خلاف معظم الصيغ التي يغطيها FileDex، ملفات .sql ليس لها مواصفة. لا يوجد مستند ISO يُعرّف ما يجب أن يحتويه ملف تفريغ .sql، ولا بايتات سحرية عند الإزاحة صفر، ولا ترويسة إلزامية. الامتداد مجرد اصطلاح: ملف نص عادي يحمل تعليمات SQL مُنتجة بأي أداة تصدير قاعدة بيانات. سجّلت IANA نوع application/sql كنوع MIME رسمي في أبريل 2013 عبر RFC 6922، لكن هذا RFC يصف نوع وسائط لغة SQL وليس بنية ملف التفريغ. الكشف يعتمد كلياً على الاستدلال — أمر file في Unix يُعرّف .sql بتمييز كلمات SQL المفتاحية وأنماط التعليقات في أول مئات البايتات.

اكتشف التفاصيل التقنية

كيف تختلف ملفات التفريغ حسب المحرك

الأدوات الثلاث الأكثر شيوعاً للتفريغ تُنتج مخرجات مختلفة بنيوياً. التعرف على الأداة التي أنشأت الملف هو الخطوة الأولى عند التعامل مع تفريغ .sql مجهول.

mysqldump (MySQL/MariaDB) يفتتح بكتلة تعليقات تحتوي إصدار MySQL والمضيف واسم قاعدة البيانات. يُصدر تعليمات SET لضبط ترميز الأحرف وفحوصات المفاتيح الخارجية ووضع SQL قبل أي تعريفات جداول. الجداول تظهر كـ DROP TABLE IF EXISTS يليها CREATE TABLE مع عبارات خاصة بالمحرك مثل ENGINE=InnoDB وDEFAULT CHARSET=utf8mb4. البيانات تستخدم INSERT INTO متعدد الصفوف بصيغة VALUES المُجمّعة للأداء.

pg_dump (PostgreSQL) يبدأ بترويسة تعليق تُعرّف إصدار PostgreSQL وإصدار أداة التفريغ. يستخدم تعليمات SET لـ client_encoding وstatement_timeout وlock_timeout. تعريفات المخطط تستخدم صيغة PostgreSQL — مُعرّفات بين علامتي اقتباس مزدوجة وSERIAL/IDENTITY للزيادة التلقائية وأسماء مؤهلة بالمخطط مثل public.users. للبيانات، يستخدم pg_dump افتراضياً أمر COPY (صيغة تحميل جماعي خاصة بـ PostgreSQL) بدلاً من INSERT.

sqlite3 .dump يلف كل شيء في BEGIN TRANSACTION وCOMMIT للاستعادة الذرية. المخطط يستخدم نظام أنواع SQLite المتساهل. البيانات تظهر كتعليمات INSERT INTO فردية. المخرجات هي الأبسط والأكثر قابلية للنقل بين الثلاث.

الجذور التاريخية

إدغار فرانك كود نشر ورقة "نموذج علائقي للبيانات في البنوك المشتركة الكبيرة" عام 1970 في مختبر أبحاث IBM بسان خوسيه. هذه الورقة قدّمت الأساس الرياضي — الجبر العلائقي والتفاضل العلائقي — الذي حلّ محل نماذج قواعد البيانات الهرمية والشبكية. بعد أربع سنوات، طوّر باحثا IBM دونالد تشامبرلين وريموند بويس لغة SEQUEL (لغة الاستعلام الإنجليزية المُهيكلة) كأول تطبيق عملي لعمليات كود العلائقية لنموذج System R. نزاع على علامة تجارية فرض تغيير الاسم إلى SQL. Oracle شحنت أول قاعدة بيانات SQL تجارية عام 1979. ANSI وحّدت اللغة كـ SQL-86، ثم ISO كـ ISO 9075 عام 1987. المعيار رُوجع عبر SQL-92 وSQL:1999 وSQL:2003 وSQL:2011 وSQL:2016 وأخيراً SQL:2023.

أنماط بنية الملف

رغم الاختلافات بين المحركات، تتشارك ملفات التفريغ هيكلاً عظمياً مشتركاً. تفتتح بترويسات تعليق تُعرّف الأداة المصدر والإصدار. تعليمات SET للتكوين تليها لضبط متغيرات الجلسة لاستيراد نظيف. ثم تأتي تعليمات CREATE TABLE التي تُعرّف المخطط. أخيراً تعليمات INSERT أو COPY تحمل صفوف البيانات الفعلية. بعض التفريغات تتضمن CREATE INDEX وALTER TABLE للمفاتيح الخارجية وCREATE TRIGGER للمنطق المُخزّن.

الترميز يكون UTF-8 افتراضياً في التفريغات الحديثة، لكن ملفات mysqldump القديمة قد تستخدم latin1 أو مجموعة أحرف قاعدة البيانات. ترويسة mysqldump عادةً تتضمن SET NAMES utf8mb4 للإعلان عن الترميز.

جدار قابلية النقل

بينما يُعرّف ISO 9075 لغة SQL معيارية، تتباعد تطبيقات المُصنّعين بشكل كبير. ملف mysqldump يستخدم اقتباس backtick وAUTO_INCREMENT وENGINE=InnoDB وINSERT متعدد الصفوف. ملف pg_dump يستخدم اقتباس مزدوج وSERIAL/IDENTITY وCOPY FROM stdin وأنواع خاصة مثل JSONB وTIMESTAMPTZ. تغذية مخرجات محرك في محرك آخر تُنتج سلسلة أخطاء نحوية.

أدوات التحويل موجودة لكنها تنطوي على مقايضات. mysql2sqlite يحذف صيغة MySQL الخاصة ويُعيد كتابتها لـ SQLite، لكنه يخسر الإجراءات المُخزّنة والمشغّلات وبعض أنواع البيانات. pgloader يمكنه ترحيل MySQL إلى PostgreSQL بأمر واحد.

السياق السعودي

القطاع المصرفي السعودي يعتمد بشكل كبير على قواعد البيانات العلائقية. منصة Elm (علم) — مزود الخدمات الرقمية الحكومية — تتعامل مع عمليات ترحيل بيانات واسعة تتضمن تفريغات SQL. شركة الاتصالات السعودية (stc) تدير أنظمة بيانات ضخمة تُصدّر وتستورد تفريغات SQL بشكل روتيني. مشاريع تحديث البنية التحتية الرقمية ضمن رؤية 2030 تتطلب ترحيل قواعد بيانات من أنظمة قديمة إلى حلول سحابية، مما يجعل فهم صيغ تفريغ SQL مهارة عملية حاسمة.

الأمان: لا تنفّذ بلا فحص

قسم اعتبارات الأمان في RFC 6922 يُحذّر صراحةً: SQL "لغة برمجة كاملة" وملفات التفريغ قد تحتوي تعليمات تحذف جداول أو تُصعّد صلاحيات أو تُنشئ حسابات خلفية أو تُسرّب بيانات عبر INTO OUTFILE. ملف .sql خبيث يمكنه تضمين DROP DATABASE أو GRANT ALL PRIVILEGES داخل ما يبدو كنسخة احتياطية عادية.

حقن SQL لا يزال في قائمة OWASP لأخطر 10 ثغرات — مصنّف A03 في 2021 (94% من التطبيقات المفحوصة أظهرت شكلاً من ثغرات الحقن مع 274,000 حالة). بينما يستهدف الحقن عادةً تطبيقات الويب، نفس المبدأ ينطبق على ملفات التفريغ: تنفيذ SQL غير موثوق يُشغّل أوامر عشوائية ضد قاعدة بياناتك.

قبل استيراد أي ملف .sql من مصدر خارجي، افحصه: شغّل wc -l للتحقق من عدد الأسطر، وhead -50 لفحص الترويسة، وابحث عن كلمات مفتاحية خطيرة مثل DROP وGRANT وINTO OUTFILE وCREATE FUNCTION.

مقارنة .SQL مع البدائل

مقارنة .SQL مع الصيغ البديلة
المقارنة المعيار الفائز
.SQL DUMP vs .CSV
دقة البيانات
تفريغات SQL تحفظ المخطط الكامل — أنواع الأعمدة والقيود والفهارس والمفاتيح الخارجية والعلاقات متعددة الجداول. CSV بيانات جدولية مسطحة بلا معلومات أنواع ولا علاقات ولا تعريف مخطط.
SQL DUMP أفضل
.SQL DUMP vs .SQLITE .DB
قابلية النقل
ملف SQLite .db قاعدة بيانات ثنائية مستقلة قابلة للقراءة بأي مكتبة SQLite على أي منصة. تفريغ SQL نص مربوط بلهجة محرك مُحدد — مخرجات mysqldump تفشل على PostgreSQL دون تحويل.
SQLITE .DB أفضل
.MYSQLDUMP vs .PG_DUMP
التوافق عبر المحركات
mysqldump يستخدم اقتباس backtick وAUTO_INCREMENT وعبارات ENGINE= وINSERT VALUES متعدد الصفوف. pg_dump يستخدم اقتباساً مزدوجاً وSERIAL/IDENTITY وCOPY FROM stdin وأسماء مؤهلة بالمخطط. لا يُستورد أي منهما في الآخر دون تحويل لهجة.
تعادل

المرجع التقني

نوع MIME
application/sql
المطوّر
IBM (Edgar Codd / Donald Chamberlin)
سنة التقديم
1974
معيار مفتوح
نعم — عرض المواصفات

البنية الثنائية

ملف تفريغ .sql نص عادي بلا بنية ثنائية أو بايتات سحرية. يفتتح الملف بكتلة ترويسة تعليقات — أسطر تبدأ بـ -- (شرطتان) أو محاطة بـ /* */ — تُعرّف أداة التفريغ والإصدار والمضيف واسم قاعدة البيانات والطابع الزمني. بعد الترويسة، تعليمات SET تُهيئ الجلسة: ترميز الأحرف (SET NAMES utf8mb4) وفحوصات المفاتيح الخارجية (SET FOREIGN_KEY_CHECKS=0) ووضع SQL. الجسم يحتوي تعليمات CREATE TABLE التي تُعرّف الأعمدة والأنواع والقيود والفهارس، يليها تعليمات INSERT INTO التي تحمل صفوف البيانات الفعلية. بعض التفريغات تتضمن ALTER TABLE للمفاتيح الخارجية المؤجلة وCREATE INDEX لفهارس الأداء. mysqldump قد يلف أقساماً في تعليقات شرطية (/*!40101 ... */). pg_dump يستخدم COPY ... FROM stdin للبيانات الجماعية بدلاً من INSERT. sqlite3 .dump يلف المخرجات بالكامل في BEGIN TRANSACTION وCOMMIT.

1970إدغار كود ينشر 'نموذج علائقي للبيانات في البنوك المشتركة الكبيرة' في IBM، مُعرّفاً الأساس الرياضي لقواعد البيانات العلائقية1974باحثا IBM تشامبرلين وبويس يُطوّران SEQUEL (أُعيدت تسميتها لاحقاً إلى SQL) كلغة استعلام لنموذج قاعدة البيانات العلائقية System R1987ISO تنشر ISO 9075:1987 (SQL-87)، أول معيار SQL دولي، بعد ANSI X3.135-19861995إصدار MySQL 1.0 من MySQL AB؛ أداة mysqldump تُرسّخ ملف تفريغ .sql كصيغة النسخ الاحتياطي المعيارية لـ MySQL1996إصدار PostgreSQL 6.0 مع أداة pg_dump، مُنتجاً تفريغات SQL بنص عادي بصيغة COPY المتميزة عن INSERT في MySQL2000إصدار SQLite 1.0 من D. Richard Hipp مع أمر .dump، مُنتجاً أبسط وأكثر صيغ تفريغ SQL قابلية للنقل2013IANA تُسجّل application/sql كنوع MIME رسمي عبر RFC 6922، أول اعتراف رسمي بـ .sql كنوع وسائط2023ISO تنشر ISO/IEC 9075:2023 (SQL:2023)، مُضيفةً استعلامات الرسم البياني (SQL/PGQ) ونوع JSON الأصلي ودعم المصفوفات متعددة الأبعاد
استيراد ملف تفريغ في MySQL أخرى
mysql -u root -p database_name < dump.sql

يُوجّه ملف .sql كمدخل قياسي إلى عميل mysql، مُنفّذاً جميع التعليمات على قاعدة البيانات المُحددة. علامة -p تطلب كلمة المرور. يجب أن تكون قاعدة البيانات الهدف موجودة مسبقاً.

استيراد ملف تفريغ في PostgreSQL أخرى
psql -U postgres -d database_name -f dump.sql

يُنفّذ جميع تعليمات SQL من التفريغ على قاعدة بيانات PostgreSQL المُحددة. علامة -f تقرأ من ملف. أضف -v ON_ERROR_STOP=1 للتوقف عند أول خطأ بدلاً من المتابعة.

استيراد ملف تفريغ في SQLite أخرى
sqlite3 new_database.db < dump.sql

يُغذّي تفريغ SQL كمدخل قياسي لواجهة sqlite3، مُنشئاً ملف قاعدة البيانات إن لم يكن موجوداً. غلاف BEGIN TRANSACTION / COMMIT في مخرجات sqlite3 .dump يضمن الاستعادة الذرية.

فرز ملف .sql مجهول أخرى
wc -l dump.sql && head -20 dump.sql

يحسب إجمالي الأسطر لتقدير حجم التفريغ، ثم يعرض أول 20 سطراً لتحديد الأداة المصدر (ترويسة mysqldump أو إصدار pg_dump أو غلاف معاملة sqlite3) والترميز قبل الاستيراد.

فحص تفريغ بحثاً عن تعليمات خطيرة أخرى
grep -in 'DROP DATABASE\|GRANT\|INTO OUTFILE\|CREATE FUNCTION\|CREATE PROCEDURE' dump.sql

يبحث عن تعليمات مُحتملة التدمير أو تصعيد الصلاحيات قبل استيراد ملف .sql غير موثوق. أي نتائج تستوجب مراجعة يدوية قبل التنفيذ.

التحويل غير متاح حالياً. ملفات تفريغ SQL تحتوي لهجات خاصة بقواعد بيانات تتطلب محللاً لكل محرك.

عالي

نقاط الضعف

  • التنفيذ الأعمى لتفريغات خبيثة — استيراد ملف .sql غير موثوق يُنفّذ جميع التعليمات المحتواة، التي قد تحذف جداول أو تمحو بيانات أو تُدرج حسابات خلفية أو تمنح صلاحيات مُرتفعة لمستخدمين يسيطر عليهم المهاجم
  • حقن إجراءات مُخزّنة — تفريغ يمكنه إنشاء CREATE FUNCTION أو CREATE TRIGGER بمنطق عشوائي يُنفّذ في عمليات قاعدة البيانات المستقبلية، مما يُديم الهجوم بعد الاستيراد الأولي
  • تسريب بيانات عبر INTO OUTFILE — أمر SELECT INTO OUTFILE في MySQL يكتب نتائج الاستعلام على نظام ملفات الخادم، مما يسمح لتفريغ مُصطنع بتسريب بيانات حساسة
  • تصعيد صلاحيات عبر GRANT — تفريغ يحتوي تعليمات GRANT ALL PRIVILEGES يمكنه رفع حساب محدود الصلاحيات إلى مدير قاعدة بيانات كامل إذا استُورد بمستخدم ذي صلاحيات كافية

الحماية: FileDex يعرض ملفات .sql كنص للقراءة فقط كمرجع للصيغة. لا تنفيذ SQL، لا اتصال بقاعدة بيانات، لا معالجة من جانب الخادم. المحتوى يُعرض في المتصفح بدون تقييم أي تعليمة.

mysql CLI أداة
عميل سطر أوامر MySQL — يستورد ملفات تفريغ .sql عبر إعادة توجيه المدخل القياسي، الطريقة المعيارية لاستعادة نسخ mysqldump الاحتياطية
psql أداة
طرفية PostgreSQL التفاعلية — تُنفّذ ملفات تفريغ .sql عبر علامة -f، الطريقة المعيارية لاستعادة نسخ pg_dump بنص عادي
DBeaver أداة
واجهة رسومية مجانية شاملة لقواعد البيانات — تتصل بـ MySQL وPostgreSQL وSQLite وOracle وSQL Server وأكثر من 80 قاعدة بيانات مع محرر SQL وأدوات استيراد وتصدير
SQLite CLI أداة
واجهة سطر أوامر SQLite — تستورد ملفات تفريغ .sql عبر إعادة توجيه المدخل القياسي، وتُنشئ ملفات قاعدة بيانات من مخرجات sqlite3 .dump
phpMyAdmin أداة
أداة إدارة MySQL عبر الويب مُرفقة مع معظم الاستضافات المشتركة — تستورد وتُصدّر ملفات تفريغ .sql عبر المتصفح، الأداة الأساسية لمستخدمي WordPress
pgloader أداة
أداة ترحيل قواعد بيانات تُحوّل تفريغات MySQL إلى PostgreSQL بأمر واحد، مع معالجة تعيين الأنواع والترميز واختلافات اللهجة تلقائياً