ඉතිරි ඩීබී වගු ඇතුළත් නොකර නිශ්චිත වගුවක් හෝ වගු කට්ටලයක් දමන්නේ කෙසේද?
ඉතිරි ඩීබී වගු ඇතුළත් නොකර නිශ්චිත වගුවක් හෝ වගු කට්ටලයක් දමන්නේ කෙසේද?
Answers:
ඔබ mydb වෙතින් t1, t2 සහ t3 වගු දමන්නේ නම්
mysqldump -u... -p... mydb t1 t2 t3 > mydb_tables.sql
ඔබට mydb හි මේස ටොන් ගණනක් තිබේ නම් සහ ඔබට t1, t2 සහ t3 හැර අනෙක් සියල්ල ඉවත දැමීමට අවශ්ය නම්, මෙය කරන්න:
DBTODUMP=mydb
SQL="SET group_concat_max_len = 10240;"
SQL="${SQL} SELECT GROUP_CONCAT(table_name separator ' ')"
SQL="${SQL} FROM information_schema.tables WHERE table_schema='${DBTODUMP}'"
SQL="${SQL} AND table_name NOT IN ('t1','t2','t3')"
TBLIST=`mysql -u... -p... -AN -e"${SQL}"`
mysqldump -u... -p... ${DBTODUMP} ${TBLIST} > mydb_tables.sql
එය උත්සාහ කර බලන්න !!!
OryRoryDonohue මට පෙන්වා දුන්නේ GROUP_CONCAT ශ්රිතයට එහි උපරිම දිග දිගු කළ යුතු බවයි. සැසි විචල්යය group_concat_max_len මගේ පිළිතුරට උපරිම 10K දිගකින් එකතු කළෙමි . ස්තූතියි, oryRoryDonohue.
SQL="${SQL} AND table_name NOT IN ('t1','t2','t3')"
කිරීමට SQL="${SQL} AND table_name NOT LIKE 'foo\_%'"
. මම එය අත්හදා බැලූ අතර එය ක්රියාත්මක වේ. 'Foo' අඩංගු සියලුම වගු ඔවුන්ගේ නම් වලින් ඕනෑම තැනකට ලබා ගැනීම සඳහා ඔබට තත්වය '% foo%' ලෙස වෙනස් කළ හැකිය ('ආහාර', 'මෝඩයා' ආදිය).
--ignore-table
තර්කයේ පැවැත්මට අනුව නොවේද? එසේ නම්, ඔබේ පිටපත පිළිතුරෙන් ඉවත් කර --ignore-table
ඒ වෙනුවට නිර්දේශ කිරීම වඩා හොඳ නොවේ ද ?
Illegal use of option --ignore-table=<database>.<table>
මා විසින් වගුව සඳහන් නොකරන්නේ නම් එය දෝෂය ලබා දෙයි schemaname.tablename
.
RolandoMySQLDBA විසින් පිළිතුර පුළුල් කිරීම සඳහා සටහනක් .
ඔහු ඇතුළත් කළ පිටපත ( and table_name in
) හෝ ( and table_name NOT in
) වගු ලැයිස්තුවක් ඇතුළත් කිරීම සඳහා හොඳ ප්රවේශයකි .
ඔබට වගු එකක් හෝ දෙකක් බැහැර කිරීමට අවශ්ය නම්, ඔබට --ignore-table
විකල්පය සමඟ ඒවා තනි තනිව බැහැර කළ හැකිය:
mysqldump -u -p etc. --ignore-table=Database.Table1 --ignore-table=Database.Table2 > dump_file.sql
ඔබට වගු කිහිපයකට වඩා ඇති විට එය මෙවැනි දෙයක් ධාවනය කිරීම වඩා හොඳය:
mysql databasename -u [user] -p[password] -e 'show tables like "table_name_%"'
| grep -v Tables_in
| xargs mysqldump [databasename] -u [root] -p [password] > [target_file]
නැත්නම් මේ වගේ දෙයක් ගැන සිතන්න:
mysqldump -u [user] -p[password] databasename `echo "show tables like 'table_name_%';"
| mysql -u[user] -p[password] databasename
| sed '/Tables_in/d'` > [target_file]
එම විධානයන් එක් පේළියක පමණක් ටයිප් කළ යුතු බව මතක තබා ගන්න.
පහත විධානය භාවිතා කර ඔබට එය කළ හැකිය:
mysqldump -uusername -ppassword dbname \
--ignore-table=schema.tablename1 \
--ignore-table=schema.tablename2 \
--ignore-table=schema.tablename3 > mysqldump.sql