মাইএসকিউএল-এর সমস্ত টেবিলগুলিতে নির্দিষ্ট কলামের নামগুলি কীভাবে সন্ধান করবেন?


850

আমার কাছে ২-৩ টি বিভিন্ন কলামের নাম রয়েছে যা আমি পুরো ডিবিতে সন্ধান করতে চাই এবং সেই সমস্ত কলামগুলিতে তালিকা তৈরি করতে চাই। কোন সহজ লিপি?


1
এটি উল্লেখ করুন: winashwin.wordpress.com/2012/08/28/mysql-search

উত্তর:


1396

কলামগুলি columnAবা ColumnBডাটাবেসে সমস্ত সারণী পেতে YourDatabase:

SELECT DISTINCT TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME IN ('columnA','ColumnB')
        AND TABLE_SCHEMA='YourDatabase';

6
@ ইকো - আপনি সর্বদা --স্কিপ-এক্সটেন্ডেড-ইনসার্টের সাথে মাইএসকিলডাম্পের সাথে খেলতে পারেন এবং তারপরে ফাইলটি গ্রেপ করতে পারেন ... নোংরা কিন্তু আশ্চর্যজনকভাবে পরিশ্রমী :)
কেন

1
@ ইকো, 5 বছর পূর্বে সংস্করণগুলির জন্য মাইএসকিএলডাম ব্যবহার করে কাঠামোটি ফাইল করে ফেলুন, আমার উত্তর দেখুন।
রাদু মেরিস

8
আপনি DATABASE()বর্তমানে নির্বাচিত ডাটাবেসে অনুসন্ধানের জন্য স্ট্রিংয়ের পরিবর্তে ব্যবহার করতে পারেন ।
শার্লক

1
@ কেন: আপনার ক্যোয়ারীতে আরও একটি ফিল্টার যুক্ত করার উপায় আছে? প্রকৃতপক্ষে, সারণিগুলি নির্বাচন করা যেখানে ডি কলামের একটি নির্দিষ্ট মান রয়েছে।
ফ্রেড ফ্ল্যাচ

2
@ ফ্রেডফ্লেচ আমি মনে করি সেই পর্যায়ে আমি কেবল তাদের কাছে একটি স্ক্রিপ্টে লুপ করব এবং এটিকে সহজ রাখব
কেন

175
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%wild%';

13
যদি একাধিক ডাটাবেস থাকে তবে একটি WHERE TABLE_SCHEMA = "" লাইনও যুক্ত করুন।
জন মিলিকিন

1
ধন্যবাদ জন, আমার যদি কলামেA এবং কলামবি উপস্থিত রয়েছে এমন সারণীর নামগুলি পাওয়া দরকার হয় তবে কীভাবে জিজ্ঞাসা করবেন?
জোবি জয়

1
@ জনমিলিকিন: বা বিপরীতে, আপনি যদি ডাটাবেসটি না কেবল কেবল ক্ষেত্রের নাম জানেন তবে এটি ছেড়ে দিন এবং TABLE_SCHEMAসেই কলামের নাম থাকা সমস্ত ডাটাবেস + টেবিল দেখতে রিটার্নের ক্ষেত্রগুলিতে যুক্ত করুন ।
হাবিল

তা কি আর পড়তে হবে না: '% বুনো%' বা '' বুনো'র পরিবর্তে '' বন্য '?
চাচা ইরোহ

1
আমি এটি চেষ্টা করেই দেখেছি যেখানে আমার পাওয়া সমস্ত ফলাফল লক্ষ্য করেছিলাম যেখানে কোয়েরিটি দেখা যাচ্ছে না এমন বস্তুর জন্য show tables;। কেউ কেন এটি হতে পারে ব্যাখ্যা করতে পারেন?
wdkrnls

46

আরও সহজভাবে এসকিউএল এর একটি লাইনে সম্পন্ন:

SELECT * FROM information_schema.columns WHERE column_name = 'column_name';

এখানে * ব্যবহারের কোনও অসুবিধা আছে কি?
Guney Ozsan

38
SELECT DISTINCT TABLE_NAME, COLUMN_NAME  
FROM INFORMATION_SCHEMA.COLUMNS  
WHERE column_name LIKE 'employee%'  
AND TABLE_SCHEMA='YourDatabase'

19

যে সংস্করণটি নেই information_schema(পুরানো সংস্করণ বা কিছু এনডিবি) আপনি টেবিলের কাঠামোটি ফেলে দিতে পারেন এবং ম্যানুয়ালি কলামটি সন্ধান করতে পারেন।

mysqldump -h$host -u$user -p$pass --compact --no-data --all-databases > some_file.sql

এখন some_file.sqlআপনার পছন্দের পাঠ্য সম্পাদকটি ব্যবহার করে কলামের নামটি অনুসন্ধান করুন বা কিছু নিফটি অ্যাজক স্ক্রিপ্ট ব্যবহার করুন।


এবং কলামটি সন্ধান করার জন্য একটি সরল সেড স্ক্রিপ্ট, কেবল COLUMN_NAME এর সাথে প্রতিস্থাপন করুন :

sed -n '/^USE/{h};/^CREATE/{H;x;s/\nCREATE.*\n/\n/;x};/COLUMN_NAME/{x;p};' <some_file.sql
USE `DATABASE_NAME`;
CREATE TABLE `TABLE_NAME` (
  `COLUMN_NAME` varchar(10) NOT NULL,

আপনি সরাসরি সেডে ডাম্পটি পাইপ করতে পারেন তবে এটি তুচ্ছ।


12

এটির বিপরীতটি অনুসন্ধানকারীদের জন্য, যেমন কোনও নির্দিষ্ট কলামের নাম না থাকা সারণীগুলি সন্ধান করা, এখানে ক্যোয়ারী ...

SELECT DISTINCT TABLE_NAME FROM information_schema.columns WHERE 
TABLE_SCHEMA = 'your_db_name' AND TABLE_NAME NOT IN (SELECT DISTINCT 
TABLE_NAME FROM information_schema.columns WHERE column_name = 
'column_name' AND TABLE_SCHEMA = 'your_db_name');

এটি সত্যিই কার্যকর হয়েছিল যখন আমরা আস্তে আস্তে InnoDB এর বিশেষ ai_colকলামের ব্যবহার শুরু করতে শুরু করেছিলাম এবং আমাদের 200 টি টেবিলগুলির মধ্যে কোনটি আপগ্রেড করা হয়নি তা বের করার প্রয়োজন হয়েছিল।


8

আপনি যদি কেবল " সমস্ত টেবিল পেতে " চান তবে এই ক্যোয়ারীটি ব্যবহার করুন:

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME like '%'
and TABLE_SCHEMA = 'tresbu_lk'

আপনি যদি " কলামগুলির সাথে সমস্ত সারণী পেতে " চান তবে এই ক্যোয়ারীটি ব্যবহার করুন:

SELECT DISTINCT TABLE_NAME, COLUMN_NAME  
FROM INFORMATION_SCHEMA.COLUMNS  
WHERE column_name LIKE '%'  
AND TABLE_SCHEMA='tresbu_lk'

6

এই এক লাইন ক্যোয়ারীটি ব্যবহার করুন, আপনার কলামের নাম দিয়ে কাঙ্ক্ষিত_ কলাম_নামটি প্রতিস্থাপন করুন।

SELECT TABLE_NAME FROM information_schema.columns WHERE column_name = 'desired_column_name';


2

তথ্য_সেমার সমস্যা হ'ল এটি ভীষণ ধীর হতে পারে। শো কমান্ড ব্যবহার করা তত দ্রুত।

আপনি ডাটাবেসটি নির্বাচন করার পরে প্রথমে দেখান টেবিলগুলি কোয়েরিটি প্রেরণ করুন। এবং তারপরে আপনি প্রতিটি টেবিলের জন্য রঙিন শো করুন।

পিএইচপি-তে এমন দেখতে হবে

    $ res = mysqli_query ("টেবিলগুলি দেখান");
    যখন ($ সারি = mysqli_fetch_array ($ res))
    ; $ আরএস 2 = mysqli_query ("কলম্বস থেকে দেখান" $ সারি [0]);
        যখন ($ rw2 = mysqli_fetch_array ($ rs2))
        {যদি ($ rw2 [0] == $ লক্ষ্য)
               ....
        }
    }


0
select distinct table_name 
from information_schema.columns 
where column_name in ('ColumnA') 
and table_schema='YourDatabase';
and table_name in 
(
 select distinct table_name 
 from information_schema.columns 
 where column_name in ('ColumnB')
 and table_schema='YourDatabase';
);

এটিরূপে গৃহীত উত্তরের মতো কলামা বা কলাম स्तরের পরিবর্তে কলামা এবং কলামবিতে টেবিলগুলি পাবেন

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