এটিএমটিএইচএইচএলাইট ডাটাবেস ফাইলে টেবিলগুলি কীভাবে তালিকাভুক্ত করা যাবে?


1197

কি এসকিউএল একটি ইন টেবিল, এবং যারা টেবিল মধ্যে সারি তালিকা ব্যবহার করা যেতে পারে SQLite ডাটাবেস ফাইলের - একবার আমি সঙ্গে এটি সংযুক্ত করেছি ATTACHকমান্ড SQLite 3 কমান্ড লাইন টুল?


1
আপনি টেবিলগুলির সম্পূর্ণ তথ্য পেয়েছেন এটি ব্যবহার করে দেখুন http://www.sqlite.org/pragma.html#schema
পিয়ুশ

2
আপনি যদি আগ্রহী হন তবে নিম্নলিখিতটি স্ক্লাইটের জন্য দরকারী জিইউআই রয়েছে: sqlitestudio.pl আপনাকে খুব দ্রুত ডেটাবেস, টেবিলগুলির বিশদ দেখতে অ্যাক্সেস দেয় এবং খুব সুন্দর একটি ক্যোয়ারী সম্পাদকও রয়েছে ...
জেমস ওরাভেক

17
.tablesসারণীগুলির জন্য এবং .schema ?TABLE?নির্দিষ্ট সারণীর স্কিমাটির জন্য।
এইচ 6

.table 'bank_%'বা উপস্থাপনা .table '%_empl'/ প্রত্যয় জিজ্ঞাসার জন্য বৈধ বাক্য গঠন!
gavenkoa

উত্তর:


576

.tablesএবং .schema"সাহায্যকারী" ফাংশন সংযুক্ত ডাটাবেস দেখব না: তারা শুধু অনুসন্ধান SQLITE_MASTER"মেন" ডাটাবেসের জন্য টেবিল। ফলস্বরূপ, যদি আপনি ব্যবহার করেন

ATTACH some_file.db AS my_db;

তাহলে আপনার করা দরকার

SELECT name FROM my_db.sqlite_master WHERE type='table';

নোট করুন যে অস্থায়ী টেবিলগুলি এর সাথে দেখাবে না .tables: আপনাকে তার জন্য তালিকা sqlite_temp_masterতৈরি করতে হবে:

SELECT name FROM sqlite_temp_master WHERE type='table';

121
শুধুমাত্র "SELECT name FROM sqlite_master WHERE type='table'"আমার জন্য কাজ করে
ভ্লাদক্রাস

3
My_db.sqlite_master থেকে নাম নির্বাচন করুন যেখানে প্রকার = 'টেবিল'; এই (সংযুক্ত ডিবি জন্য) আমার জন্য কাজ করে না এবং এটি যেমন ত্রুটি ছোঁড়া: কোনো সংগ্রহ নেই সারণীটি বিদ্যমান "my_db.sqlite_master"
কণিকে

অস্থায়ী টেবিল বলতে কী বোঝাতে চেয়েছেন? আমি যখন এসকিউএলাইট ডিবি ফাইলটি খোলাম তখন কি কোনও আছে?
ইওকস

অস্থায়ী টেবিলগুলি হ'ল CREATE TEMPORARY TABLEএসকিউএল কমান্ড দিয়ে তৈরি করা । বর্তমান ডাটাবেস সংযোগ বন্ধ হয়ে গেলে তাদের বিষয়বস্তুগুলি বাদ দেওয়া হয় এবং এগুলি কখনই কোনও ডাটাবেস ফাইলে সংরক্ষণ করা হয় না।
অ্যান্টনি উইলিয়ামস

1
স্ক্লাইট 3 কমান্ড মোডের অধীনে এবং ATTACH "some_file.db" AS my_db; এটি কাজ করে!
জন_জে

1272

এসকিউএল ডাটাবেসে টেবিলগুলি দেখতে কয়েকটি পদক্ষেপ রয়েছে:

  1. আপনার ডাটাবেসে সারণী তালিকাবদ্ধ করুন:

    .tables
  2. টেবিলটি কেমন দেখাচ্ছে তা তালিকাবদ্ধ করুন:

    .schema tablename
  3. পুরো টেবিলটি মুদ্রণ করুন:

    SELECT * FROM tablename;
  4. উপলব্ধ সমস্ত এসকিউএলাইট প্রম্পট কমান্ডগুলির তালিকা দিন:

    .help

45
.tableএবং .tablesউভয় অনুমোদিত। এই ক্ষেত্রে, .taপাশাপাশি কাজ করবে, যেহেতু sqlite3 যে কোনও আদেশ যে দ্ব্যর্থহীন তা গ্রহণ করবে। সহায়তা অনুসারে কমান্ডের নামটি অবশ্যই "। টেবিলগুলি" (যদি এখনও কেউ মনোযোগ দিচ্ছেন)।
ডিবিএন

29
(এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, এটি জিনিসগুলির পক্ষে সবচেয়ে স্ক্লাইট-ওয়াই উপায়)।
ডিবিএন

6
.tablesযদি কোনও ডেটাবেস (গুলি) খোলে তবে টেবিলগুলি প্রদর্শন করবে না ATTACH '<path>' AS <name>;তবে লাসের উত্তরটি করবে। যেহেতু ওপিতে অ্যাটাক্যাচিংয়ের কথা উল্লেখ করা হয়েছে আমি বিশ্বাস করি যে তিনি এই উত্তরটি গ্রহণ না করে সঠিক ছিলেন। সম্পাদনা: সবেমাত্র লক্ষ্য করেছেন যে অ্যান্টনি এবং নীচে অন্যরাও এটি দেখিয়েছে।
এন্টিপ্লেক্স

2
@ ডিবিডাব্লু: খুব দরকার নেই। আপনি এসকিউএলাইট বা মাইএসকিএল (আমার কেস) ব্যবহার করতে সক্ষম একটি ডিবি র‌্যাপারটি করছেন তা বিবেচনা করুন। আরও এসকিউএল-কনফর্ম কমান্ড ব্যবহার করা অন্য ভাষাগুলিতে মোড়ানো পোর্ট করা আরও সহজ করে দেয় যদি আপনি ডিবি-বিক্রেতার নির্দিষ্ট কমান্ড ব্যবহার করেন।
ভ্যালেন্টিন হেইনিৎজ

"... sqlite3 যে কোনও কমান্ড দ্ব্যর্থহীন তা গ্রহণ করবে ..." দুর্ভাগ্যক্রমে কখনও কখনও এটি অস্পষ্ট কমান্ডগুলিও গ্রহণ করে। উদাহরণস্বরূপ, ".s" এর অর্থ ".শো" হিসাবে ব্যাখ্যা করা হয়, যদিও "। স্কেম", '.সেটেটার ", বা"। স্ট্যাটস "এছাড়াও সম্ভাবনা হতে পারে And সম্ভাবনাগুলি তালিকাভুক্ত করে না

442

এটি প্রদর্শিত হয় যে আপনাকে স্ক্লাইট_মাস্টার সারণির মধ্য দিয়ে যেতে হবে :

SELECT * FROM dbname.sqlite_master WHERE type='table';

এবং তারপরে SELECTসারিগুলিতে দেখার জন্য প্রতিটি টেবিলে ম্যানুয়ালি একটি বা অনুরূপ দিয়ে যান ।

.DUMPএবং .SCHEMAকমান্ড এ সব ডাটাবেসের দেখতে মনে হচ্ছে না।


120
ভবিষ্যতে ব্যবহারের জন্য পড়তে বা মনে রাখার মতো সহজ কিছু নয়; builtin .tablesকমান্ড আরও বেশি ধারণাসম্পন্ন হয়

24
@ গ্রিলিদা: এটি যে কোনও এসকিউএল-এপিআই থেকে এটি ভ্যালাইড এসকিউএল হিসাবে ব্যবহারযোগ্য despite অন্তর্নির্মিত কমান্ডগুলি সর্বত্র সমর্থিত নয়।
ভ্যালেন্টিন হেইনিৎজ

2
@ ডক্টরজে .tablesসংযুক্ত ডাটাবেস থেকে টেবিল প্রদর্শন করতে সংশোধন করা হয়েছে?
লাসে ভি কার্লসেন

4
সেই ডাটাবেসে হ্যাঁ, তবে এই প্রশ্নটি আপনার সংযুক্ত একটি ডাটাবেসে টেবিলগুলি প্রদর্শন করার বিষয়ে ছিল। হয়েছে .tablesকমান্ড ভাল হিসাবে যারা দেখানোর জন্য পরিবর্তিত হয়ে?
লাসে ভি কার্লসেন

4
ডোহ! বোধগম্যতা পড়া ব্যর্থ ... আমি কোনওভাবে এটিটিএএচসিএচ রেফারেন্সটি ধরতে সক্ষম হইনি ... দুবার> _ <
ডক্টর জে

162

সমস্ত সারণী প্রদর্শন করতে, ব্যবহার করুন

SELECT name FROM sqlite_master WHERE type = "table"

সমস্ত সারি দেখানোর জন্য, আমি অনুমান করি আপনি সমস্ত টেবিলের মাধ্যমে পুনরাবৃত্তি করতে পারেন এবং প্রতিটিতে একটি নির্বাচন করুন *। কিন্তু সম্ভবত একটি ডাম্প আপনি কি পরে আছেন?


16
একমাত্র উত্তরের জন্য ধন্যবাদ যা সত্যই প্রশ্নটিকে সম্বোধন করেছে ... "হোয়াট এসকিউএল", কোন আদেশটি ব্যবহার করা যাবে না ... ধন্যবাদ!
ব্র্যাড পার্কগুলি

এছাড়াও, এটি প্রতি লাইনে একটি টেবিলের নাম প্রিন্ট করে, যখন টেবিলগুলি টেবিলের নামগুলির একাধিক কলাম প্রিন্ট করে (বিরক্তিকর / দরকারী নয়)।
শেন

68

.helpউপলব্ধ কমান্ডগুলির জন্য পরীক্ষা করতে ব্যবহার করুন ।

.table

এই কমান্ডটি আপনার বর্তমান ডাটাবেসের অধীনে সমস্ত সারণী প্রদর্শন করবে।


আশ্চর্যের বিষয়, এটি অবশ্যই সঠিক হতে হবে, তবে আমি যখন এটি ব্যবহার করি তখন কাজ করে না
জর্জেন কে

42

এসকিউএলাইট কমান্ড লাইনে এটির জন্য একটি কমান্ড উপলব্ধ রয়েছে:

.tables ?PATTERN?      List names of tables matching a LIKE pattern

যা নিম্নলিখিত এসকিউএল তে রূপান্তর করে:

SELECT name FROM sqlite_master
WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL
SELECT name FROM sqlite_temp_master
WHERE type IN ('table','view')
ORDER BY 1

36

সারণী তালিকাবদ্ধ করতে আপনি এটি করতে পারেন:

SELECT name FROM sqlite_master
WHERE type='table';

তো ... cur.execute(""" SELECT name FROM sqlite_master WHERE type='table';""")না না? এটি আমার পক্ষে কাজ করছে না তবে আমি নিশ্চিত নই যে এই কোডটি কোথায় চালানো হবে।
jbuddy_13

32

ব্যবহার করে দেখুন PRAGMA table_info(table-name);
http://www.sqlite.org/pragma.html#schema


2
এটি সম্ভবত এটি করার সেরা উপায়।
অ্যালিক্স অ্যাক্সেল

7
আপনি কেবল সারণির নাম জানলেই এটি কাজ করে। আপনি টেবিলের নামের তালিকা পেতে এটি ব্যবহার করতে পারবেন না।
এরিক ডব্লিউ

24

আমি এটি পেতে এটি জিজ্ঞাসাটি ব্যবহার করি:

SELECT name FROM sqlite_master WHERE type='table'

এবং আইওএসে ব্যবহার করতে:

NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];

16

ডকুমেন্টেশন অনুসারে , মাইএসকিউএল'র সমতুল্য SHOW TABLES;হ'ল:

".Tables" কমান্ডটি নীচের কোয়েরিটি সম্পাদন করে তালিকা মোডে সেটিংয়ের অনুরূপ:

SELECT name FROM sqlite_master
  WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL
SELECT name FROM sqlite_temp_master
  WHERE type IN ('table','view')
ORDER BY 1;

তবে, আপনি যদি একটি একক সারণী উপস্থিত রয়েছে কিনা তা পরীক্ষা করে দেখছেন (বা তার বিশদটি পেতে), দেখুন @ লুইজগারন উত্তর।


15

এসকিউএলাইট 3 এর সর্বশেষতম সংস্করণ হিসাবে আপনি ইস্যু করতে পারেন:

.fullschema

আপনার তৈরি বিবৃতি সব দেখতে।


এসকিউএল সংস্করণ 3.7.13 2012-07-17 17:46:21 নির্দেশাবলীর জন্য ".হেল্প" লিখুন এসকিউএল স্টেটমেন্টগুলিকে "" "দিয়ে সমাপ্ত করে লিখুন; sqlite>। ফুলশেমার ত্রুটি: অজানা কমান্ড বা অবৈধ আর্গুমেন্ট: "ফুলস্কেমা"। সহায়তার জন্য ".হেল্প" প্রবেশ করুন
মোনা জালাল

2
আপনি ২০১২ থেকে একটি সংস্করণ ব্যবহার করছেন
গোলমরিচ

12

এটি করার সহজতম উপায় হ'ল .dumpএসকিউএলাইট 3 শেল টুলটি চালানোর পরে এটি সংযুক্তি না করে সরাসরি ডাটাবেস খুলুন এবং কমান্ডটি ব্যবহার করা ।

সুতরাং ... (ধরে নিন আপনার ওএস কমান্ড লাইন প্রম্পটটি $) এর পরিবর্তে $sqlite3:

sqlite3> ATTACH database.sqlite as "attached"

আপনার ওএস কমান্ড লাইন থেকে সরাসরি ডাটাবেস খুলুন:

$sqlite3 database.sqlite
sqlite3> .dump

10

এ মাধ্যমে union all, সমস্ত টেবিলকে একটি তালিকায় একত্রিত করুন।

select name
from sqlite_master 
where type='table'

union all 

select name 
from sqlite_temp_master 
where type='table'


7

যেহেতু কেউ এসকিউএলাইটের অফিশিয়াল রেফারেন্স সম্পর্কে উল্লেখ করেনি, তাই আমি মনে করি যে এই শিরোনামের অধীনে এটি উল্লেখ করা কার্যকর হতে পারে:

https://www.sqlite.org/cli.html

আপনি এই লিঙ্কে বর্ণিত কমান্ডগুলি ব্যবহার করে আপনার ডাটাবেসটি চালিত করতে পারেন। এছাড়াও, আপনি যদি উইন্ডোজ ওএস ব্যবহার করছেন এবং কমান্ড শেলটি কোথায় আছে তা যদি না জানেন তবে এটি এসকিউএলাইটের সাইটে রয়েছে:

https://www.sqlite.org/download.html

এটি ডাউনলোড করার পরে, এসকিউএলাইট কমান্ড শেলটি শুরু করতে sqlite3.exe ফাইলটি ক্লিক করুন । যখন এটি আরম্ভ করা হয়, ডিফল্টরূপে এই এসকিউএল সেশনটি ডিস্কে থাকা কোনও ফাইল নয়, একটি মেমোরি ডাটাবেস ব্যবহার করে এবং সেশনটি প্রস্থান করার সময় সমস্ত পরিবর্তনগুলি হারাতে হবে। অবিচ্ছিন্ন ডিস্ক ফাইলটি ডাটাবেস হিসাবে ব্যবহার করতে, টার্মিনাল উইন্ডোটি শুরু হওয়ার সাথে সাথে ".open ex1.db" কমান্ডটি প্রবেশ করুন।

উপরের উদাহরণটির ফলে "ex1.db" নামের ডাটাবেস ফাইলটি খোলা এবং ব্যবহার করা হবে এবং এটি যদি আগে বিদ্যমান না থাকে তবে তৈরি করা হয়। আপনি যে ডিরেক্টরিটি মনে করছেন ফাইলটি ডিরেক্টরিতে রয়েছে তা নিশ্চিত করার জন্য আপনি একটি পুরো পথের নাম ব্যবহার করতে চাইতে পারেন। ফরোয়ার্ড-স্ল্যাশ ডিরেক্টরি বিভাজক চরিত্র হিসাবে ব্যবহার করুন। অন্য কথায় "c: / work/ex1.db" ব্যবহার করুন, "c: \ work \ ex1.db" নয়।

আপনি পূর্বে যে ডাটাবেসটি বেছে নিয়েছেন তাতে সমস্ত সারণী দেখতে , উপরের লিঙ্কে যেমন বলা হয় .tables কমান্ডটি টাইপ করুন।

আপনি যদি উইন্ডোজে কাজ করেন তবে আমি মনে করি যে এই স্ক্যালিটি.এক্স.এই ফাইলটিকে অন্য পাইথন ফাইলগুলির সাথে একই ফোল্ডারে স্থানান্তরিত করা কার্যকর হতে পারে। এইভাবে, পাইথন ফাইলটি লিখেছে এবং .db ফাইলগুলি থেকে পাঠানো এসকিউএলাইট শেল একই পথে রয়েছে।


5

".Schema" কমান্ডো উপলব্ধ টেবিলগুলি তৈরি করতে ব্যবহৃত বিবৃতিটি দেখিয়ে উপলভ্য টেবিলগুলি এবং তাদের সারিগুলি তালিকাভুক্ত করবে:

sqlite> টেবিল_এ তৈরি করুন (আইডি ইন্ট, একটি ইনট, বি ইনট);
স্ক্লাইট> .চেমি টেবিল_এ
টেবিল তৈরি করুন টেবিল_এ (আইডি ইন্টি, একটি ইনট, বি ইন্ট);

1

.da সমস্ত ডাটাবেস দেখতে - একটিকে ' মূল ' বলা হয়

এই ডাটাবেসের সারণীগুলি দ্বারা দেখা যেতে পারে

1 দ্বারা স্ক্লাইট_মাস্টার অর্ডার থেকে পৃথক tbl_name নির্বাচন করুন;

সংযুক্ত ডাটাবেসগুলির ATTACH যেমন বিবৃতিতে এএ (, বিবি, সিসি ...) তে আপনি নির্বাচন করেছেন এমন উপসর্গ প্রয়োজন : সুতরাং:

Aa.sqlite_master অর্ডার থেকে 1 টি দ্বারা আলাদা tbl_name নির্বাচন করুন ;

নোট করুন যে এখানে আপনি মতামত পেতে। এগুলি বাদ দেওয়ার জন্য যেখানে 'অর্ডার' এর আগে টাইপ করুন = 'টেবিল '

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