سؤال كيف أقوم بتحميل ملف sql.gz إلى قاعدة البيانات الخاصة بي؟ (استيراد)


أحاول استيراد ملف SQL gzipped إلى mysql مباشرة. هل هذا هو الطريق الصحيح؟

mysql -uroot -ppassword mydb > myfile.sql.gz

118
2018-05-03 07:06


الأصل


حتى مع تجاهل جانب gzip من السؤال ، فإن سهمك يشير إلى الطريقة الخاطئة ... - Matt Fletcher


الأجوبة:


zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database

> سوف يكتب إخراج mysql الأمر على stdout في الملف myfile.sql.gz وهو على الأرجح ليس ما تريده. بالإضافة إلى ذلك ، سيطالبك هذا الأمر بكلمة مرور المستخدم "الجذر" MySQL.


187
2018-05-03 07:10



كممارسة أمان جيدة ، أود أن أضع كلمة المرور الخاصة بي على سطر الأوامر ، أود أن أطلب mysql تسأل عن ذلك. - Prof. Moriarty
أو حتى أفضل: خلق ~/.my.cnf مع أوراق الاعتماد. ؛) - joschi
مثلProf. Moriarty explans ، يمكنك تعديل الأمر لعدم استخدام كلمة المرور عبر zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database. ستعرف المعلمة الأخيرة هي قاعدة البيانات التي ترغب في استخدامها ، وليس كلمة المرور الخاصة بك. - bafromca
لتصحيح تعليق @ Prof.Moriarty قليلاً ، ستكون ممارسة الأمان جيدة ليس ضع كلمة المرور الخاصة بي في سطر الأوامر (حيث يتم تخزينها في التاريخ أو مشاهدتها على كتفك) ، والسماح لـ MySQL بالسؤال عنها. سيؤدي العلم -p وحده إلى طلب MySQL في المطالبة بكلمة المرور. - George
+1 لشيء ما يترك تفريغ قاعدة البيانات لعنة مضغوط - Dmitri DB


لعرض شريط تقدم أثناء استيراد ملف sql.gz ، قم بتنزيله pv واستخدم ما يلي:

pv mydump.sql.gz | gunzip | mysql -u root -p

في CentOS / RHEL ، يمكنك تثبيت pv with yum install pv.

في دبيان / أوبونتو apt-get install pv.

في MAC ، brew install pv


66
2017-11-03 19:46



pv يبدو أن في repos Ubuntu أيضا (على الأقل في 12.04 LTS هو) ، ولكن مرة أخرى تحتاج إلى القيام sudo apt-get install pv للحصول عليه. شكرا بانجير ، وهذا مثالي لاستيراد قاعدة البيانات الكبيرة! - toon81
اضطررت لتشغيل pv mydump.sql.gz | gunzip | mysql -u الجذر my_database_name. كان ذلك لأنني كنت أستورد جداول وليس لديّ كلمة مرور لمستخدم الجذر الخاص بي - Cristiano Mendonça
في MAC ، brew install pv - score


إن أبسط طريقة هي لفك ضغط ملف قاعدة البيانات قبل الاستيراد. كما ذكر من قبل Prof. موريارتي يجب ألا تحدد كلمة المرور في الأمر (ستتم مطالبتك بكلمة المرور). هذا الأمر مأخوذ من webcheatsheet بفك ضغط واستيراد قاعدة البيانات دفعة واحدة:

gunzip < myfile.sql.gz | mysql -u root -p mydb

48
2017-11-22 15:51



أيضا ، يجب أن يتم إنشاء mydb قبل الاستيراد. هذا لا يخلق ديسيبل بالنسبة لك. - Siddhartha
لقد وجدت الأنابيب الخاصة بي gunzip على ملف مضغوط 10GB تسبب استيراد بلدي لتجميد. غير متأكد ما إذا كان ذلك بسبب قيود الذاكرة أو شيء ما ولكنني أخطئ إلى جانب القيام بخطوة واحدة في كل مرة في المستقبل. - Ryan Tuck
RyanTuck هذا هو دفع حدود هذا النوع من العمليات :) - icc97
Siddhartha يعتمد ذلك على ملف تفريغ SQL. في بعض الأحيان أنها تشمل إنشاء بيانات قاعدة البيانات. - rooby
rooby هذا منطقي. - Siddhartha


إذا حصلت على خطأ من zcatحيث تحتوي رسالة الخطأ على اسم الملف مع لاحقة إضافية .Z، ثم حاول استخدام gzcat بدلا من ذلك ، كما هو موضح في https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly


10
2017-07-08 13:59





تحقق أيضًا مما إذا كان هناك أي عبارة USE في ملف SQL. لا يضمن تحديد قاعدة البيانات في سطر الأوامر أن تنتهي البيانات في الأعلى إذا تم تحديد وجهة مختلفة داخل ملف SQL.


3
2018-05-03 11:28



كل ما تحتاجه هو تمديد الأمر كما يلي: pv mydump.sql.gz | gunzip | mysql -u root -p  your_database. تستخدم الإجابة المقبولة هذا الأسلوب. - bafromca


على نظام MacOS ، استخدمت هذا:

zcat < [Database].sql.gz | mysql -u root -p [Database Name in MySQL]

أدخل كلمة المرور الخاصة بك ، وفويلا!


3
2017-11-28 07:41





إلى عن على BZIP2 ملفات مضغوطة (.sql.bz2) ، استخدم:

bzcat <file> | mysql -u <user> -p <database>

أو

pv <file> | bunzip2 | mysql -u <user> -p <database>

لرؤية شريط التقدم.


1
2017-08-01 15:25





يمكنك استخدام -c, --stdout, --to-stdout خيار من gunzip أمر

فمثلا:

gunzip -c file.sql.gz | mysql -u root -p database

0
2017-09-16 06:03