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


29

সাধারণত আমি টার্মিনাল.এপ খুলি এবং একটি দূরবর্তী মাইএসকিউএল ডাটাবেসের সাথে সংযুক্ত করি।

তারপরে আমি এই কমান্ডটি একটি টেবিল ড্রপ করতে ব্যবহার করব:

mysql> drop table [table name];

তবে আমার যা প্রয়োজন তা হ'ল ডাটাবেজে সমস্ত সারণী বাদ দেওয়ার জন্য কমান্ড লাইন।

যদি আমি ব্যবহার করি:

mysql> drop database [database name];

আমি ডাটাবেস পুরোপুরি ধ্বংস করব এবং আমি আবার সারণী তৈরি করতে সক্ষম হব না। আমি কি সঠিক?


উত্তর:


27

আপনি তাত্ক্ষণিকভাবে ডাটাবেসটি ফেলে দিতে পারেন:

mysql> drop database [database name];
mysql> create database [database name];

অথবা আপনি ডাটাবেসে প্রতিটি টেবিল ড্রপ করতে একটি স্ক্রিপ্ট ব্যবহার করতে পারেন।


ঠিক আছে, ঠিক নিশ্চিত হতে: আমি এই লাইন দিয়ে টার্মিনাল দূরবর্তী ডাটাবেসের সাথে সংযোগ: / আবেদনগুলি / MAMP / লাইব্রেরি / বিন / MySQL -h 80.54.554.10 -u adm_user -p my_db । আপনি যেভাবে ডাটাবেসটি ফেলেছেন এবং তৈরি করার পরে আমাকে কি এই সংযোগের মানগুলি পরিবর্তন করতে হবে বা সেগুলি একই থাকবে?
শেফেলোন

1
@ শেফ - সমস্ত টেবিল ফেলে রেখে পুরো ডাটাবেস বাদ দেওয়া একই প্রভাব ফেলবে না। আপনি যদি কেবল টেবিলগুলি ফেলে দেন তবে কোনও ডাটাবেস প্রশস্ত অনুমতি থাকবে, আপনি যদি ডাটাবেসটি ড্রপ / পুনরায় তৈরি করেন তবে তা নয়।
নিফলে

10
@ শেফেলোন: সাবধান! একটি ডেটাবেস ড্রপ করা সঞ্চিত পদ্ধতি এবং ব্যবহারকারীর সংজ্ঞায়িত ভিউগুলিও ফেলে দেয়।
রোল্যান্ডোমাইএসকিউএলডিবিএ

আমার জন্য বেশ পরিষ্কার। আমি প্রতিটি টেবিল মুছতে স্ক্রিপ্টের সাথে যাব।
শেফেলোন

1
এটি সম্পূর্ণরূপে অনিরাপদ, মন্তব্যগুলি দেখুন http://stackoverflow.com/a/12403742/1713660
ভ্লাদক্রাস

10

আপনি নিম্নলিখিত আদেশটি চেষ্টা করতে পারেন:

mysqldump --no-data --add-drop-table DB_NAME | grep ^DROP | mysql -v DB_NAME

বা:

mysql --silent --skip-column-names -e "SHOW TABLES" DB_NAME | xargs -L1 -I% echo 'DROP TABLE `%`;' | mysql -v DB_NAME

DB_NAMEআপনার ডাটাবেসের নাম কোথায় ? ডাটাবেস শংসাপত্রগুলি আপনি ~/.my.cnfকমান্ডের মধ্যে বা এগুলি যুক্ত করতে পারেন (যেমন -uroot -proot))

আপনার ডাটাবেস ব্যবহারকারীর এটিকে ড্রপ করার অনুমতি না দিলে এই পদ্ধতিটির ডেটাবেস ফেলে দেওয়ার এবং তৈরি করার কিছু সুবিধা রয়েছে।


1
নিশ্চিত হওয়া দ্বিতীয় উদাহরণ, দুর্দান্ত। অতিরিক্ত পতাকা হিসাবে আগে --silentএবং -v/ --verboseযথাক্রমে ডিবি শংসাপত্রগুলি যুক্ত করুন :--user=username --password=password --host=host.name
এখানে

ভাল ধারণা. বিদেশী কী থাকলে তবে কিছু সমস্যা হয়। আমি | sort -rবিপরীত লাইনে যুক্ত করি, তবে এখনও কিছু ডিবি উপযুক্ত নয়।
ফ্যানসিউং

2

mysql -u USERHERE -pPASSWORDHERE --silent --skip-column-names -e "SHOW TABLES" DATABASENAMEHERE | xargs -L1 -I% echo 'SET FOREIGN_KEY_CHECKS = 0; DROP TABLE%;' | mysql -u USERHERE -pPASSWORDHERE -v DATABASENAMEHERE


2
সুপার ব্যবহারকারীকে স্বাগতম! যদিও এটি প্রশ্নের উত্তর দিতে পারে, আপনি কেন এটি করেন তা ব্যাখ্যা করতে পারলে এটি আরও ভাল উত্তর হবে। আমরা বিস্তৃত, উচ্চ-মানের উত্তর খুঁজছি যা কিছু ব্যাখ্যা এবং প্রসঙ্গ সরবরাহ করে। শুধু একটি লাইনের উত্তর দেবেন না; আপনার উত্তর কেন সঠিক তা ব্যাখ্যা করুন, আদর্শভাবে উদ্ধৃতি দিয়ে। ব্যাখ্যাগুলি অন্তর্ভুক্ত না করে এমন উত্তরগুলি সরানো হতে পারে। এছাড়াও, আপনার ফর্ম্যাটিং পরীক্ষা করুন।
জি-ম্যান বলছেন 'মনিকাকে পুনরায় ইনস্টল করুন'

ড্রপ টেবিল পর সেট foreign_key_checks = 1 ভুলে: দেখুন stackoverflow.com/a/2873991/4306855 মাইএসকিউএল -u USERHERE -pPASSWORDHERE --silent --skip-কলাম-নাম -e "দেখান টেবিল" DATABASENAMEHERE | xargs -L1 -I% প্রতিধ্বনি 'SET FOREIGN_KEY_CHECKS = 0; টেবিল% ড্রপ; বিদেশে সেট করুন_কিজি_ CHECKS = 1; ' | mysql -u USERHERE -pPASSWordHERE -v DATABASENAMEHERE
টোটো 21
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.