কীভাবে মাইএসকিএল টেবিল কলামগুলির ডেটা টাইপ পাবেন?


111

আমি একটি মাইএসকিএল টেবিলের কলামের ডেটা ধরণ পেতে চাই।

ভেবেছিলাম আমি MYSQLFIELDকাঠামোটি ব্যবহার করতে পারি তবে এটি গণনা করা ক্ষেত্রের প্রকার।

তারপরে চেষ্টা করেছি mysql_real_query()

আমি যে ত্রুটিটি পাচ্ছি তা হ'ল query was empty

আমি কীভাবে কলামের ডেটা টাইপ করব?

উত্তর:


121

আপনি তথ্য_স্কেমা কলামগুলির সারণিটি ব্যবহার করতে পারেন :

SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS 
  WHERE table_name = 'tbl_name' AND COLUMN_NAME = 'col_name';

9
ভুলে যাবেন না: এবং INDEX_SCHEMA = 'ডাটাবেস_নাম'
ইনশাল্লাহ

আমি ব্যক্তিগতভাবে এটি চেষ্টা করেছি এবং এই উত্তরটি ওপি যা করতে চেয়েছিল তা করে তা সম্মত করব। একটি পাশের নোটটিতে কিছুটা অদ্ভুতভাবে কীভাবে "টেবিল_নাম" ম্যানুয়ালটিতে ছোট ছোট ক্যাপগুলি রয়েছে, এটি কি UPPER হওয়া উচিত নয়? (এটি কোনও পার্থক্য করে না)
ছুটসু

8
এছাড়াও নোট করুন যে ডেটা টাইপের একটি নির্দিষ্ট দৈর্ঘ্য রয়েছে, যেমন। VARCHAR (50) SELECT COLUMN_TYPEযে কেউ অতিরিক্ত তথ্য পেতে ব্যবহার করতে পারে ।
চুটসু

11
যদি INDEX_SCHEMA কাজ না করে তবে TABLE_SCHEMA = 'ডাটাবেস_নাম' চেষ্টা করুন
সেনক

4
আপনি যখন AND COLUMN_NAME = 'col_name'কলামের নামটি প্রদর্শন না করেন আপনি সমস্ত কলামের (মুছে ফেলার ) প্রকারটি জানতে চাইলে এই কোয়েরিটি অকেজো SELECT COLUMN_NAME, DATA_TYPE FROM etc.
স্কিপি লে গ্র্যান্ড গৌরু

81

নীচের ক্যোয়ারী মাইএসকিউএল ক্ষেত্রের ধরণ সহ প্রতিটি ক্ষেত্র সম্পর্কে তথ্যের একটি তালিকা প্রদান করে। এখানে একটি উদাহরণ:

SHOW FIELDS FROM tablename
/* returns "Field", "Type", "Null", "Key", "Default", "Extras" */

দেখুন এই ম্যানুয়েল পৃষ্ঠা


21
এর বিকল্প হ'ল এক্সপ্ল্লেইন টেবিল নাম;
হোবডেভ

4
এই উত্তরটি পেতে টাইপটি পেতে আরও হ্যান্ডলিং দরকার ... ব্যবহারকারীর 353591 দেওয়া উত্তরটি আরও ভাল
চটসু

WHERE FIELD = '<your column name>'আপনি যদি একটি একক কলামের তথ্য চান তবে যুক্ত করুন ।
প্লাসিড

40

বেশিরভাগ উত্তরগুলি সদৃশ, সেগুলি গোষ্ঠীভুক্ত করা কার্যকর হতে পারে। মূলত দুটি সহজ বিকল্প প্রস্তাব করা হয়েছে।

প্রথম বিকল্প

প্রথম বিকল্পটিতে 4 টি পৃথক উপকরণ রয়েছে, যার কয়েকটি বেশ সংক্ষিপ্ত:

EXPLAIN db_name.table_name;
DESCRIBE db_name.table_name;
SHOW FIELDS FROM db_name.table_name;
SHOW COLUMNS FROM db_name.table_name;

(এনবি: এর বিকল্প হিসাবে db_name.table_name, কেউ একটি দ্বিতীয় ব্যবহার করতে পারে FROM :db_name FROM table_name )।

এটি এমন কিছু দেয়:

+------------------+--------------+------+-----+---------+-------+
| Field            | Type         | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| product_id       | int(11)      | NO   | PRI | NULL    |       |
| name             | varchar(255) | NO   | MUL | NULL    |       |
| description      | text         | NO   |     | NULL    |       |
| meta_title       | varchar(255) | NO   |     | NULL    |       |
+------------------+--------------+------+-----+---------+-------+

দ্বিতীয় বিকল্প

দ্বিতীয় বিকল্পটি কিছুটা দীর্ঘ:

SELECT
  COLUMN_NAME, DATA_TYPE 
FROM
  INFORMATION_SCHEMA.COLUMNS 
WHERE
  TABLE_SCHEMA = 'db_name'
AND
  TABLE_NAME = 'table_name';

এটিও কম কথামূলক:

+------------------+-----------+
| column_name      | DATA_TYPE |
+------------------+-----------+
| product_id       | int       |
| name             | varchar   |
| description      | text      |
| meta_title       | varchar   |
+------------------+-----------+

যদিও এর AND COLUMN_NAME = 'column_name'(বা like) ব্যবহার করে কলামে প্রতি নির্বাচনের অনুমতি দেওয়ার সুবিধা রয়েছে ।


21

সমস্ত কলামের ডেটা ধরণের পেতে:

describe table_name

বা কেবল একটি একক কলাম:

describe table_name column_name

আপনি এই কাজ করতে পারেন জানতেন না। আপনি আমাকে তথ্য স্কিমার মাধ্যমে ট্র্যাম্পিংয়ের একটি গোছা সবেমাত্র সংরক্ষণ করেছেন।
বেটি মক

13

নীচের mysql ক্যোয়ারী ব্যবহার করুন।

SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH 
FROM information_schema.columns 
WHERE table_schema = '<DATABASE NAME>' 
AND table_name = '<TABLE NAME>' 
AND COLUMN_NAME = '<COLOMN NAME>' 

মাই এসকিএল ক্যোয়ারির ফলাফল ult


তবে এটি কেবল সর্বোচ্চ দৈর্ঘ্য দেবে। SELECT DATA_TYPEঅন্যান্য উত্তর দ্বারা প্রস্তাবিত হিসাবে এটি ব্যবহার করা ভাল না ?
ফ্যাবিও মনিকাকে

হ্যাঁ তুমিই ঠিক. আমি এটি যুক্ত করতে ভুলে গেছি আমি এখন এটি সংশোধন করা হয়েছে। ধন্যবাদ
প্রসন্ত কুমার



2

যে কোনও ডাটাবেসে কলামের সমস্ত ডেটাটাইপ ব্যবহৃত হচ্ছে তা অনুসন্ধান করার জন্য অনুসন্ধান করুন

SELECT distinct DATA_TYPE FROM INFORMATION_SCHEMA.columns 
WHERE table_schema = '<db_name>' AND column_name like '%';

4
অতিমাত্রায় নয় AND column_name like '%'?
স্কিপি লে গ্র্যান্ড গৌড়

1

কাল্পনিক থেকে কলটি দেখান

স্ব অন্তর্ভুক্ত সম্পূর্ণ উদাহরণগুলি প্রায়শই দরকারী।

<?php
  // The server where your database is hosted                 localhost
  // The name of your database                                mydatabase
  // The user name of the database user                       databaseuser
  // The password of the database user                        thesecretpassword
  // Most web pages are in utf-8 so should be the database    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
  try
  {
    $pdo = new PDO("mysql:host=localhost;dbname=mydatabase", "databaseuser", "thesecretpassword", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));  
  }
    catch(PDOException $e)
  {
    die('Could not connect: ' . $e->getMessage());
  }

  $sql   = "SHOW COLUMNS FROM mytable";
  $query = $pdo->prepare($sql);
  $query->execute();

  $err = $query->errorInfo();
  $bug = $err[2];

  if ($bug != "") { echo "<p>$bug</p>"; }

  while ($row = $query->fetch(PDO::FETCH_ASSOC))
  {
    echo "<pre>" . print_r($row, true) . "</pre>";
  }

  /* OUTPUT SAMPLE  
  Array
  (
      [Field] => page_id
      [Type] => char(40)
      [Null] => NO
      [Key] => 
      [Default] => 
      [Extra] => 
  )

  Array
  (  
      [Field] => last_name
      [Type] => char(50)
      More ...
  */
?>

4
ওপি সঙ্গে এই প্রশ্ন ট্যাগ করা হয়নি phpট্যাগ
Rotimi

1
ResultSet rs = Sstatement.executeQuery("SELECT * FROM Table Name");

ResultSetMetaData rsMetaData = rs.getMetaData();

int numberOfColumns = rsMetaData.getColumnCount();
System.out.println("resultSet MetaData column Count=" + numberOfColumns);

for (int i = 1; i <= numberOfColumns; i++) {
 System.out.println("column number " + i);

  System.out.println(rsMetaData.getColumnTypeName(i));
}

ওপি এই প্রশ্নটিকে javaট্যাগ দিয়ে ট্যাগ করেনি ।
রোটিমি

1

নির্বাচন থেকে * তথ্য নির্বাচন করুন CHCHMAMA.COLUMNS যেখানে ট্যাবলেট_সচেমি = 'SCHEMA_NAME' এবং COLUMN_KEY = 'পিআরআই'; যেখানে COLUMN_KEY = 'পিআরআই';

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