يحتوي هذا الريبو على فئة سهلة الاستخدام لتفريغ قاعدة بيانات باستخدام PHP. يتم حاليًا دعم MySQL وPostgreSQL وSQLite وMongoDB. خلف الكواليس يتم استخدام mysqldump
و pg_dump
و sqlite3
و mongodump
.
فيما يلي أمثلة بسيطة لكيفية إنشاء تفريغ قاعدة بيانات باستخدام برامج تشغيل مختلفة:
ماي إس كيو إل
SpatieDbDumperDatabasesMySql::create() ->setDbName($databaseName) ->setUserName($userName) ->ضبط كلمة المرور($كلمة المرور) ->dumpToFile('dump.sql');
PostgreSQL
SpatieDbDumperDatabasesPostgreSql::create() ->setDbName($databaseName) ->setUserName($userName) ->ضبط كلمة المرور($كلمة المرور) ->dumpToFile('dump.sql');
سكليتي
SpatieDbDumperDatabasesSqlite::create() ->setDbName($pathToDatabaseFile) ->dumpToFile('dump.sql');
includeTables
.
MongoDB
SpatieDbDumperDatabasesMongoDb::create() ->setDbName($databaseName) ->setUserName($userName) ->ضبط كلمة المرور($كلمة المرور) ->dumpToFile('dump.gz');
نحن نستثمر الكثير من الموارد في إنشاء أفضل الحزم مفتوحة المصدر في فئتها. يمكنك دعمنا عن طريق شراء أحد منتجاتنا المدفوعة.
نحن نقدر بشدة إرسالك لنا بطاقة بريدية من مسقط رأسك، مع ذكر الحزمة (الحزم) التي تستخدمها. ستجد عنواننا على صفحة الاتصال لدينا. ننشر جميع البطاقات البريدية المستلمة على جدار البطاقات البريدية الافتراضية لدينا.
للتخلص من MySQL-db، يجب تثبيت mysqldump
.
للتخلص من PostgreSQL-db، يجب تثبيت pg_dump
.
للتخلص من SQLite-db يجب تثبيت sqlite3
.
للتخلص من MongoDB-db، يجب تثبيت mongodump
.
لضغط ملفات التفريغ، يجب تثبيت gzip
و/أو bzip2
.
يمكنك تثبيت الحزمة عبر الملحن:
يتطلب الملحن spatie/db-dumper
هذه هي أبسط طريقة لإنشاء ملف تفريغ MySql db:
SpatieDbDumperDatabasesMySql::create() ->setDbName($databaseName) ->setUserName($userName) ->ضبط كلمة المرور($كلمة المرور) ->dumpToFile('dump.sql');
إذا كنت تعمل مع PostgreSQL، فما عليك سوى استخدام أداة التفريغ هذه، فمعظم الطرق متاحة على كل من MySql. و PostgreSql-dumper.
SpatieDbDumperDatabasesPostgreSql::create() ->setDbName($databaseName) ->setUserName($userName) ->ضبط كلمة المرور($كلمة المرور) ->dumpToFile('dump.sql');
إذا تم تثبيت الملف الثنائي mysqldump
(أو pg_dump
) في موقع غير افتراضي، فيمكنك إعلام الحزمة باستخدام وظيفة setDumpBinaryPath()
:
SpatieDbDumperDatabasesMySql::create() ->setDumpBinaryPath('/custom/location') ->setDbName($databaseName) ->setUserName($userName) ->ضبط كلمة المرور($كلمة المرور) ->dumpToFile('dump.sql');
إذا تم نشر التطبيق الخاص بك وتحتاج إلى تغيير المضيف (الافتراضي هو 127.0.0.1)، يمكنك إضافة الدالة setHost()
- :
SpatieDbDumperDatabasesMySql::create() ->setDbName($databaseName) ->setUserName($userName) ->ضبط كلمة المرور($كلمة المرور) ->setHost($host) ->dumpToFile('dump.sql');
عند إنشاء تفريغ قاعدة البيانات، قد تحتاج إلى التحكم في تضمين قيم AUTO_INCREMENT. يمكن أن يكون هذا أمرًا بالغ الأهمية لتجنب تعارضات المفاتيح الأساسية أو للحفاظ على تناسق المعرف عند نقل البيانات عبر البيئات.
لحذف قيم AUTO_INCREMENT من الجداول الموجودة في ملف التفريغ الخاص بك، استخدم أسلوب SkipAutoIncrement. يعد هذا مفيدًا بشكل خاص لمنع التعارضات عند استيراد التفريغ إلى قاعدة بيانات أخرى حيث قد تكون قيم AUTO_INCREMENT المحددة موجودة بالفعل، أو عندما لا تكون القيم الدقيقة ذات صلة.
SpatieDbDumperDatabasesMySql::create() ->setDbName('dbname') ->setUserName('اسم المستخدم') ->ضبط كلمة المرور('كلمة المرور') ->تخطي AutoIncrement() ->dumpToFile('dump.sql');
بشكل افتراضي، يتم تضمين قيم AUTO_INCREMENT في التفريغ. ومع ذلك، إذا كنت قد استخدمت الأسلوب SkipAutoIncrement مسبقًا وترغب في التأكد من تضمين قيم AUTO_INCREMENT في تفريغ لاحق، فاستخدم الأسلوب dontSkipAutoIncrement لتضمينها بشكل صريح.
SpatieDbDumperDatabasesMySql::create() ->setDbName('dbname') ->setUserName('اسم المستخدم') ->ضبط كلمة المرور('كلمة المرور') ->dontSkipAutoIncrement() ->dumpToFile('dump.sql');
في بعض التطبيقات أو البيئات، يتم توفير بيانات اعتماد قاعدة البيانات كعناوين URL بدلاً من المكونات الفردية. في هذه الحالة، يمكنك استخدام الأسلوب setDatabaseUrl
بدلاً من الطرق الفردية.
SpatieDbDumperDatabasesMySql::create() ->setDatabaseUrl($databaseUrl) ->dumpToFile('dump.sql');
عند توفير عنوان URL، ستقوم الحزمة تلقائيًا بتحليله وتوفير المكونات الفردية إلى أداة التفريغ القابلة للتطبيق.
على سبيل المثال، إذا قمت بتوفير عنوان URL mysql://username:password@hostname:3306/dbname
، فإن أداة التفريغ ستستخدم مضيف hostname
، الذي يعمل على المنفذ 3306
، وسوف تتصل بـ dbname
باستخدام username
وكلمة password
.
باستخدام مصفوفة:
SpatieDbDumperDatabasesMySql::create() ->setDbName($databaseName) ->setUserName($userName) ->ضبط كلمة المرور($كلمة المرور) ->تضمين الجداول(['table1', 'table2', 'table3']) ->dumpToFile('dump.sql');
باستخدام سلسلة:
SpatieDbDumperDatabasesMySql::create() ->setDbName($databaseName) ->setUserName($userName) ->ضبط كلمة المرور($كلمة المرور) ->تضمين الجداول ('الجدول 1، الجدول 2، الجدول 3') ->dumpToFile('dump.sql');
من أجل استخدام " --column-statistics=0 " كخيار في أمر mysqldump، يمكنك استخدام طريقة doNotUseColumnStatistics() .
إذا قمت بتثبيت mysqldump 8 ، فإنه يقوم بالاستعلام بشكل افتراضي في جدول column_statics في قاعدة بيانات information_schema . في بعض الإصدارات القديمة من MySql (الخدمة) مثل 5.7، هذا الجدول غير موجود. لذلك يمكن أن يكون لديك استثناء أثناء تنفيذ mysqldump. لتجنب ذلك، يمكنك استخدام طريقة doNotUseColumnStatistics() .
SpatieDbDumperDatabasesMySql::create() ->setDbName($databaseName) ->setUserName($userName) ->ضبط كلمة المرور($كلمة المرور) ->doNotUseColumnStatistics() ->dumpToFile('dump.sql');
يمكنك استبعاد الجداول من التفريغ باستخدام مصفوفة:
SpatieDbDumperDatabasesMySql::create() ->setDbName($databaseName) ->setUserName($userName) ->ضبط كلمة المرور($كلمة المرور) ->استبعاد الجداول(['table1', 'table2', 'table3']) ->dumpToFile('dump.sql');
أو باستخدام سلسلة:
SpatieDbDumperDatabasesMySql::create() ->setDbName($databaseName) ->setUserName($userName) ->ضبط كلمة المرور($كلمة المرور) ->استبعاد الجداول('الجدول 1، الجدول 2، الجدول 3') ->dumpToFile('dump.sql');
يمكنك استخدام doNotCreateTables
لمنع كتابة عبارات الإنشاء.
$dumpCommand = MySql::create() ->setDbName('dbname') ->setUserName('اسم المستخدم') ->ضبط كلمة المرور('كلمة المرور') ->doNotCreateTables() ->getDumpCommand('dump.sql', 'credentials.txt');
يمكنك استخدام doNotDumpData
لمنع كتابة بيانات الصف.
$dumpCommand = MySql::create() ->setDbName('dbname') ->setUserName('اسم المستخدم') ->ضبط كلمة المرور('كلمة المرور') ->doNotDumpData() ->getDumpCommand('dump.sql', 'credentials.txt');
إذا كنت تريد إضافة خيار عشوائي إلى أمر التفريغ، فيمكنك استخدام addExtraOption
$dumpCommand = MySql::create() ->setDbName('dbname') ->setUserName('اسم المستخدم') ->ضبط كلمة المرور('كلمة المرور') ->addExtraOption('--xml') ->getDumpCommand('dump.sql', 'credentials.txt');
إذا كنت تعمل مع MySql، فيمكنك تعيين اسم قاعدة البيانات باستخدام --databases
كخيار إضافي. يعد هذا مفيدًا بشكل خاص عند استخدامه مع خيار --add-drop-database
mysqldump
(راجع مستندات mysqldump).
$dumpCommand = MySql::create() ->setUserName('اسم المستخدم') ->ضبط كلمة المرور('كلمة المرور') ->addExtraOption('--قواعد بيانات dbname') ->addExtraOption('--add-drop-database') ->getDumpCommand('dump.sql', 'credentials.txt');
مع MySql، لديك أيضًا خيار استخدام الخيار الإضافي --all-databases
. يعد هذا مفيدًا عندما تريد تشغيل نسخة احتياطية كاملة لجميع قواعد البيانات في اتصال MySQL المحدد.
$dumpCommand = MySql::create() ->setUserName('اسم المستخدم') ->ضبط كلمة المرور('كلمة المرور') ->addExtraOption('--جميع قواعد البيانات') ->getDumpCommand('dump.sql', 'credentials.txt');
يرجى ملاحظة أن استخدام ->addExtraOption('--databases dbname')
أو ->addExtraOption('--all-databases')
سيتجاوز اسم قاعدة البيانات المعين في استدعاء ->setDbName()
السابق.
إذا كنت تريد ضغط ملف الإخراج، يمكنك استخدام فئة الضاغط.
هناك نوعان من الضواغط التي تخرج من الصندوق:
GzipCompressor
- سيؤدي هذا إلى ضغط تفريغ قاعدة البيانات الخاصة بك باستخدام gzip
. تأكد من تثبيت gzip
على نظامك قبل استخدام هذا.
Bzip2Compressor
- سيؤدي هذا إلى ضغط تفريغ قاعدة البيانات الخاصة بك باستخدام bzip2
. تأكد من تثبيت bzip2
على نظامك قبل استخدام هذا.
$dumpCommand = MySql::create() ->setDbName('dbname') ->setUserName('اسم المستخدم') ->ضبط كلمة المرور('كلمة المرور') ->useCompressor(new GzipCompressor()) // أو `new Bzip2Compressor()`->dumpToFile('dump.sql.gz');
يمكنك إنشاء الضاغط الخاص بك بتطبيق واجهة Compressor
. إليك كيف تبدو هذه الواجهة:
مساحة الاسم SpatieDbDumperCompressors؛ ضاغط الواجهة {الوظيفة العامة useCommand(): سلسلة؛ الوظيفة العامة useExtension(): string; }
يجب على useCommand
ببساطة إرجاع أمر الضغط الذي سيتم ضخ تفريغ db إليه. إليك تنفيذ GzipCompression
.
مساحة الاسم SpatieDbDumperCompressors؛ فئة GzipCompressor تنفذ الضاغط {وظيفة عامة useCommand (): سلسلة {return 'gzip'؛ }الوظيفة العامة useExtension(): string{return 'gz'; } }
اختبار الملحن $
الرجاء مراجعة سجل التغيير للحصول على مزيد من المعلومات حول ما تغير مؤخرًا.
يرجى الاطلاع على المساهمة للحصول على التفاصيل.
يرجى مراجعة سياستنا الأمنية حول كيفية الإبلاغ عن الثغرات الأمنية.
فريك فان دير هيرتن
جميع المساهمين
ساهم Adriano Machado في دعم PostgreSQL الأولي. ساهم بيتر ماتسيكانيتس في دعم SQlite.
رخصة معهد ماساتشوستس للتكنولوجيا (MIT). يرجى الاطلاع على ملف الترخيص لمزيد من المعلومات.