শেল স্ক্রিপ্ট থেকে, আমি কীভাবে পরীক্ষা করতে পারি যে মাইএসকিউএল ডাটাবেসে একটি সারণী বিদ্যমান আছে কি না?


8

আমি এমন একটি স্ক্রিপ্ট লেখার চেষ্টা করছি যা কোনও ব্যবহারকারীকে কোনও টেবিলে কী কী কারসাজি করতে হবে তা নির্বাচন করতে দেয়। আমি টেবিলের উপস্থিতি আছে কিনা তা যাচাই করতে চাই। যদি এটি বিদ্যমান থাকে তবে আমি অন্যান্য জিনিস চালিয়ে যাব বা অন্যথায় আমি প্রস্থান করবো বলার টেবিলের অস্তিত্ব নেই। আমি কীভাবে এটি অর্জন করতে পারি।

উত্তর:


12
if [ $(mysql -N -s -u root -p -e \
    "select count(*) from information_schema.tables where \
        table_schema='db_name' and table_name='table_name';") -eq 1 ]; then
    do something
else
    echo "table <table_name> does not exist"
    exit 1
fi
  • -N কলামের নাম বাদ দিতে to
  • -s ননট্যাবুলার আউটপুট জন্য

2
আপনার স্ক্রিপ্টটি আপনাকে কোনও পাসওয়ার্ড না থামিয়ে এবং প্ররোচিত না করে মাইএসকিউএলে লগ ইন করতে, আপনি .my.cnfআপনার হোম ডিরেক্টরিতে একটি ফাইল তৈরি করতে এবং এতে একটি [client]ব্লক যুক্ত করতে পারেন password="my_password"। ম্যানুয়ালটিতে ব্যবহারকারী বিকল্প ফাইলগুলির বিভাগটি দেখুন ।
লাদাদাদাদা

4

মাইএসকিউএলে আপনি শেল থেকে -e ব্যবহার করতে পারেন

mysql -e "desc main_db.clients" > /dev/null 2>&1
echo $?

3

আপনি যদি এমন কোনও পদ্ধতি চান যা কোনও মাইএসকিএল ক্লায়েন্ট চালা এবং মাইএসকিএল সার্ভারে লগ ইন না করে, আপনি এটি করতে পারেন:

if ls -l /var/lib/mysql/database/table.frm 2> /dev/null > /dev/null
then
  echo Table exists
else
  echo Table does not exist
fi

আপনাকে প্রথম লাইনে আপনার ডেটা ডিরেক্টরি, আপনার ডাটাবেসের নাম এবং আপনার টেবিলের নামটি প্রতিস্থাপন করতে হবে।

আদেশ সহকারে:

  1. আপনি যদি InnoDB ব্যবহার করছেন এবং প্রতি টেবিলে ইনানোডব-ফাইল-ফাইল ব্যবহার না করছেন তবে এটি কাজ করবে না । অর্থাৎ স্ক্রিপ্ট বলতে পারে টেবিলটি থাকা সত্ত্বেও এটি বিদ্যমান নেই।
  2. ফাইল সিস্টেমটি ব্যবহার করে টেবিলগুলি অনুলিপি করা বা মাইআইএসএএম থেকে ইনোডিবিতে স্যুইচ করা সহ বিভিন্ন কারণে এই ফাইলটির পক্ষে উপস্থিতি পাওয়া সম্ভব। অর্থাৎ স্ক্রিপ্ট বলতে পারে যে সারণীটি বিদ্যমান না থাকলেও এটি বিদ্যমান।

উপরের কারণে এটি ইতিমধ্যে উপস্থাপিত অন্যান্য পদ্ধতিগুলির মতো নির্ভরযোগ্য নয় তবে এটি মাইএসকিএল ক্লায়েন্টকে এড়িয়ে চলে তাই এটি এখনও কার্যকর হতে পারে।

নোট করুন যে এখানে উপস্থাপিত সমস্ত পদ্ধতি আপনার নিজের অনুমতিগুলি (ফাইল সিস্টেম বা মাইএসকিউএল) সঠিক হওয়ার উপর নির্ভর করে। যদি আপনি এগুলি ভুল হয়ে থাকেন তবে আপনি সম্ভবত একটি মিথ্যা নেতিবাচক পাবেন।

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