মাইএসকিএলডম্প - কেবল স্বায়ত্তশাসন ছাড়াই রফতানি কাঠামো


88

আমার একটি মাইএসকিউএল ডেটাবেস আছে এবং আমি কেবল অটো ইনক্রিমেন্ট মান ব্যতীত এর কাঠামোগুলি রফতানির জন্য কোনও উপায় অনুসন্ধান করার চেষ্টা করছি। mysqldump --no-dataপ্রায় কাজটি করতে পারে তবে এটি স্বতঃআপনার মানগুলিকে রাখে। পিএইচপিএমআইএডমিন ব্যবহার না করে এটি করার কোনও উপায় আছে (যা আমি জানি এটি এটি করতে পারে)?


মাইএসকিউএল 5.5 (সার্ভার) এর সাথে দেখে মনে হচ্ছে --no-dataডিফল্টরূপে অটো_সংশোধনের মান বাদ যাবে।
জোয়ে অ্যাডামস

@ জোয়্যা অ্যাডামস আপনি কি নিশ্চিত? এটি আমার আচরণ নয়
অ্যাল্যান্ড

4
@ জোয়্যাএডামস মাইএসকিউএল ৫.।।
টিবেরিউ-আয়নু স্টান

উত্তর:


70

তুমি এটি করতে পারো :

mysqldump -u root -p -h <db-host> --opt <db-name> -d --single-transaction | sed 's/ AUTO_INCREMENT=[0-9]*\b//' > <filename>.sql

অন্যদের দ্বারা উল্লিখিত হিসাবে, আপনি যদি sedসঠিকভাবে কাজ করতে চান তবে g( জি লোবাল প্রতিস্থাপনের জন্য) প্যারামিটারটি এভাবে যুক্ত করুন:

mysqldump -u root -p -h <db-host> --opt <db-name> -d --single-transaction | sed 's/ AUTO_INCREMENT=[0-9]*\b//g' > <filename>.sql

(এটি কেবলমাত্র যদি আপনি জিইউআই সরঞ্জাম ইনস্টল করেন তবেই কাজ করে mysqldump --skip-auto-increment:)

মন্তব্য আপডেট করার জন্য নতুন আপডেট।

\bঅনর্থক এবং কখনও কখনও কমান্ড ভঙ্গ করবে। ব্যাখ্যার জন্য এই বিষয়টি দেখুন । সুতরাং অনুকূলিত উত্তরটি হ'ল:

mysqldump -u root -p -h <db-host> --opt <db-name> -d --single-transaction | sed 's/ AUTO_INCREMENT=[0-9]*//g' > <filename>.sql

11
আমি মনে করি না --skip-auto-incrementএটি একটি আসল বিকল্প is ডকুমেন্টেশনে এটি খুঁজে পাচ্ছি না । এই ইস্যুটির জন্য দুটি মাইএসকিউএল বাগের উভয়েরই এটির উল্লেখ নেই: 20786 , 30957 । মাইসকিल्डম্পের কোন সংস্করণে এই বিকল্প রয়েছে?
ধনী

4
--skip-auto-incrementমাইএসকিউএল জিইউআই সরঞ্জামগুলিতে একটি বিকল্প যুক্ত করা থাকে যদি সঠিকভাবে মনে থাকে। (নিশ্চিত নয় So) সুতরাং বাস্তবে এটি আসলে কোনও সমাধান নয়! তবে দ্বিতীয় ইনলাইন কমান্ডটি সঠিক, আমি এটি এখানে প্রতিষ্ঠিত করেছি যেখানে বিষয়টি স্বতঃসংশোধের বিষয়ে কথা বলে এবং sedফিল্টারিংয়ের ধারণা সরবরাহ করে !
জোডেভ

4
শেড বিকল্পটি সমস্ত অটো বর্ধন সরিয়ে ফেলবে না যদি আপনি একাধিক টেবিল রফতানি করেন তবে কেবল সর্বশেষটি। এছাড়াও, --স্কিপ-অটো-ইনক্রিমেন্ট কোনও বিদ্যমান বিকল্প নয়। কীভাবে এই উত্তরটি এত বেশি রেট দেওয়া গেল?
লেক্স

4
আপনার সেড কমান্ডের শেষে আপনার অ্যাজি দরকার: সমস্ত উপস্থিতি প্রতিস্থাপন করতে সেড 's /...//.../ g'।
পি 91 পল

এই আদেশটি সঠিক নয়। --স্কিপ-অটো-ইনক্রিমেন্টের অস্তিত্ব নেই। রেজেক্স সঠিক নয়। P91paul হিসাবে উল্লেখ করা হয়েছে যে সমস্ত উপস্থিতি প্রতিস্থাপন করার জন্য g সংশোধক যুক্ত করা দরকার। পরিবর্তে @ জন ডাব্লু সমাধানটি ব্যবহার করুন।
আলেেক্স গবি 20'16

52

জোদেবের উত্তর আমার পক্ষে নিখুঁতভাবে নিয়মিত প্রকাশের সাথে সামান্য সমন্বয় করে:

mysqldump -d -h localhost -u<user> -p<password> <databaseName> | sed 's/ AUTO_INCREMENT=[0-9]*//g' > databaseStructure.sql

4
হ্যাঁ আমি নিশ্চিত না যে \bসেড স্টেটমেন্টের মধ্যে এটি কী করে, তবে @ জন ডাব্লুডাব্লু এর পরামর্শ অনুসারে, সেই সুইচটি সরানো আমার পক্ষেও কৌশলটি করে the
ডেভিড

4

এটি --create-অপশনস, যা --opt এর সাথে ডিফল্টরূপে অন্তর্ভুক্ত থাকে, যা AUTO_INCREMENT সারণী সংজ্ঞা তৈরি করে।

আপনি যদি কেবল বেস টেবিলগুলি চান,

mysql -hlocalhost -uuser -ppass --skip-column-names --batch \
    -e "select table_name from tables where table_type = 'BASE TABLE' and table_schema = 'schemaname'" INFORMATION_SCHEMA \
| xargs mysqldump -hlocalhost -uuser -ppass \
    --no-data --skip-triggers --skip-opt --no-create-db \
    schemaname

আপনি যদি ভিউ, ট্রিগার এবং রুটিনগুলিও চান,

mysqldump -hlocalhost -uuser -ppass \
    --skip-opt --events --routines --no-data \
    schemaname

4
নোট করুন যে এটি কোনও স্বয়ংক্রিয় বর্ধন ক্ষেত্র, drop tableগুলি, অক্ষর সেট ইত্যাদিও
বাদ দেয়

2

এই পোস্টে ধন্যবাদ, আমি আমার প্রশ্নের উত্তর দিতে সক্ষম হয়েছি:

আমি কীভাবে আমার ডিবিতে সংস্করণ নিয়ন্ত্রণ করতে পারি?

তারপরে আমি এই স্ক্রিপ্টটি তৈরি করেছি: db_bkp.sh

#!/bin/sh
filename="db_structure.sql"
backupfolder="/var/www/"
fpath="$backupfolder/$filename"
usr="DBUSER"
pass="DBPASS"
db="DBNAME"
mysqldump --user=$usr --password=$pass --no-data $db | sed 's/ AUTO_INCREMENT=[0-9]*//g' > "$fpath"

তারপরে আমি এটি ক্রন্টাব-এ যুক্ত করেছি:

30 5 * * * sh /home/scripts/db_bkp.sh

তারপরে আমার রেপোতে আমি ফলাফলটি db_structure.sqlগিটে যোগ করে এবং উন্নত পরিবর্তনের দিকে এগিয়ে যাওয়ার আগে আমি সবসময় যাচাই করেছিলাম যে কোনও কাঠামোগত পরিবর্তন আমি সমস্ত ডিবিএসে করতে ভুলে গিয়েছি কিনা।


-1

mysqldump -u [USER] -p [পাসওয়ার্ড] -ডি --স্কিপ-অপ্ট - একসেল-লেনদেন [DB_SCHEMA]> [ফাইল.ESTENSIONE]


6
এটি কেবল সক্ষম থাকা ক্ষেত্রগুলিতে অটো_সংশোধন পতাকাটি সরিয়ে ফেলবে, শেষে কেবল অটো_সংশোধন মান নয়।
অ্যাকুরিওন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.