ডেটাবেস না ফেলে মাইএসকিউএল ডাটাবেসে সমস্ত টেবিল কীভাবে বাদ দেবেন?


12

আমার পূর্বের নামগুলি না জেনে আমার সমস্ত টেবিলগুলি একটি ডাটাবেসে ফেলে দিতে হবে। সাধারণ পদ্ধতি হ'ল ড্রপ এবং তারপরে ডাটাবেসটি পুনরায় তৈরি করা তবে এটি কোনও বিকল্প নয়। এটা করার সবচেয়ে ভালো উপায় কি?


1
সম্ভবত এটি আগেই জিজ্ঞাসা করা উচিত ছিল, তবে আমি মনে করি না এর চেয়ে আরও দেরী: কী ওএস?
জেফ স্নাইডার

ইউনিক্স / লিনাক্স ওএস এর মতো।
এঞ্জেল চিয়াং

উত্তর:


18

মাইএসকিএলডাম্প (থিংগি মা জিগ ব্লগ থেকে ) ব্যবহার করে একটি সহজ বাশ ওয়ান-লাইনার রয়েছে ।

mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]

যদি আপনি এই ত্রুটিটি পান:

ERROR 1217 (23000) at line 1: Cannot delete or update a parent row: 
    a foreign key constraint fails

নিম্নলিখিত চেষ্টা করুন:

(echo 'SET foreign_key_checks = 0;'; 
 (mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | 
     grep ^DROP); 
 echo 'SET foreign_key_checks = 1;') | \
    mysql -u[USERNAME] -p[PASSWORD] -b [DATABASE]

এখন এটি সীমাবদ্ধতা উপেক্ষা করে।


5

আপনি ব্যবহার করা উচিত information_schema ডাটাবেসের সম্পর্কে মেটাডেটা আনতে টেবিল, এবং তারপর সেখান তালিকাবদ্ধ টেবিল ছেড়ে দিন।


3

এটি করার জন্য আপনি একটি দ্রুত শেল স্ক্রিপ্ট চেষ্টা করতে পারেন:

#!/bin/bash

IFS=$'\n'
for table in `mysql <databaseName> -N -e 'show tables'`; do
    echo mysql <databaseName> -e "drop table $table"
done

echoএটি যা যা আপনি প্রত্যাশা করছেন তা যাচাই করার পরে সরান ।


যাইহোক, আপনি আইএফএসের মান আগে '$' লিখছেন কেন? কেন এটি "আইএফএস = '\ n'" এর মতো দেখাচ্ছে না?
কলিপ্টো

@o_OTync $''ব্যাশ ব্যবহারের কারণে আক্ষরিকভাবে পরিবর্তে ব্যাকস্ল্যাশ সিক্যুয়েন্সকে ব্যাখ্যা করতে পারে। '\n'ঠিক ঠিক এর মতোই \ n, যা which $IFSএবং n অক্ষরগুলিতে বিভক্ত হতে বুঝতে পারে contain $'\n'একটি নতুনলাইন অক্ষর, 0x0D থাকবে। আরও তথ্যের জন্য এখানে দেখে নিন: gnu.org/software/bash/manual/bashref.html#ANSI_002dC-Quoting
জেফ স্নাইডার

আমি মনে করি এটি INFORMATION_SCHEMA ব্যবহার করার চেয়ে সহজ।
অ্যাঞ্জেল চিয়াং

0

সাম্প্র্প ব্লগে সম্প্রতি একটি এন্ট্রি ছিল যা এটি দুর্দান্তভাবে কভার করে।

এটা তোলে অন্তর্ভুক্ত কেন ব্যবহার INFORMATION_SCHEMAসবসময় একটি ভাল জিনিস এবং তথ্যসূত্র যাদের সুদৃশ্য মানুষের কাছ থেকে একটি হাতিয়ার নয় Maatkit

এর সাথে নিম্নলিখিতটি ব্যবহার করে দেখুন mk-find:

mk-find '<database>' --printf 'DROP TABLE %D.%N'

আপনি যদি ফলাফলগুলি নিয়ে খুশি হন তবে:

mk-find '<database>' --exec 'DROP TABLE %D.%N'

-2

আপনার যদি ফাইল সিস্টেম অ্যাক্সেস থাকে তবে কেবল rm -rf databasename/*:)।

ড্রপ ডাটাবেস বিবৃতি একই কাজ করে ... মাইএসকিউএল ম্যানুয়াল থেকে অংশ:

DROP DATABASE বিবৃতি প্রদত্ত ডাটাবেস ডিরেক্টরি থেকে মাইএসকিউএল নিজেই তৈরি করতে পারে এমন ফাইল এবং ডিরেক্টরিগুলি অপসারণ করে:


2
মাইএসকিউএল হ'ল এই ফাইলগুলি হঠাৎ অদৃশ্য হয়ে যাবে এবং যে কোনও সংখ্যক ক্রিয়াকলাপ, লেনদেন, প্রতিলিপি,
লকস এর মাঝে

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