এসকিউএলাইট কমান্ড-লাইন শেলের মধ্যে থেকে ডাটাবেস ফাইল খোলা হচ্ছে


92

আমি এসকিউএলাইট কমান্ড লাইন শেল ব্যবহার করছি । ডকুমেন্ট হিসাবে, এক্সিকিউটেবলের পক্ষে যুক্তি হিসাবে সরবরাহ করে আমি একটি ডাটাবেস খুলতে পারি:

sqlite3 data.db

কমান্ড-লাইন আর্গুমেন্ট হিসাবে ফাইল সরবরাহ না করেই ডিভাইসটি ডিভাইসটি প্রবেশ করার পরে কীভাবে কোনও ডাটাবেস ফাইল খুলতে হবে তা আমি বুঝতে পারি না (যদি আমি বলি, উইন্ডোজে sqlite3.exe ডাবল ক্লিক করুন)। ডাটাবেস ফাইল নির্দিষ্ট করার জন্য এসকিউএল শেল সরঞ্জামের মধ্যে কমান্ডটি কী?

উত্তর:


112

আপনি এক এবং আরও বেশি ডাটাবেস সংযুক্ত করতে পারেন এবং এর সাথে একইভাবে স্ক্লাইট dbname.db ব্যবহার করার মতো কাজ করতে পারেন

sqlite3
:
sqlite> attach "mydb.sqlite" as db1;

এবং আপনি .Databases সহ সমস্ত সংযুক্ত ডেটাবেস দেখতে পাবেন

যেখানে সাধারণ উপায়ে কমান্ড-লাইন ডিবিতে প্রধান ব্যবহৃত হয়

.databases
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main                                                                       
1    temp                                                                       
2    ttt              c:\home\user\gg.ite                                   

14
আহ! ধন্যবাদ. আমার কোয়েরিগুলি চালানোর জন্য আমি কোন্ ডেটাবেসটি উল্লেখ করব?
নোলান অ্যামি

কোনও টেম্প ডেটাসেট তৈরি না করে উত্থিত হওয়া কি স্বাভাবিক?

আপনি ডাটাবেসের নামের সাথে টেবিলের নামটি উপস্থাপন করে ডাটাবেসটি নির্দিষ্ট করেন। উপরের উদাহরণটিতে উপসর্গটি "db1" হবে, যেমন উদাহরণস্বরূপSELECT * FROM db1.tbl1;
বাগম্যানট 123

20

আমি মনে করি কেবল একটি একক ডাটাবেস খোলার এবং অনুসন্ধান শুরু করার সহজ উপায় হ'ল:

sqlite> .open "test.db"
sqlite> SELECT * FROM table_name ... ;

বিজ্ঞপ্তি: এটি শুধুমাত্র 3.8.2+ সংস্করণে কাজ করে


11

ডাটাবেস খোলার জন্য স্ক্লাইট শেলের মধ্যে থাকা কমান্ডটি .open

বাক্য গঠনটি হ'ল,

sqlite> .open dbasename.db

যদি এটি কোনও নতুন ডাটাবেস যা আপনি তৈরি করতে এবং খুলতে চান তবে তা is

sqlite> .open --new dbasename.db

ডাটাবেসটি যদি অন্য কোনও ফোল্ডারে বিদ্যমান থাকে তবে পাথটি এইভাবে উল্লেখ করতে হবে:

sqlite> .open D:/MainFolder/SubFolder/...database.db

উইন্ডোজ কমান্ড শেলটিতে, আপনাকে একটি ডিরেক্টরি উপস্থাপন করতে '\' ব্যবহার করা উচিত, তবে এসকিউএলাইট ডিরেক্টরিতে '/' দ্বারা প্রতিনিধিত্ব করা হয়। আপনি যদি এখনও উইন্ডোজ স্বরলিপি ব্যবহার করতে পছন্দ করেন তবে আপনার প্রতিটি '\' এর জন্য একটি পালানোর ক্রম ব্যবহার করা উচিত


9

অন্যান্য ডিবি সিস্টেমে আপনি যেভাবে এটি করেন, আপনি ডাবল নামযুক্ত টেবিলগুলি সনাক্ত করার জন্য ডিবি নামটি ব্যবহার করতে পারেন। অনন্য টেবিলের নামগুলি সরাসরি ব্যবহার করতে পারে।

select * from ttt.table_name;

অথবা যদি সংযুক্ত সমস্ত ডাটাবেসে সারণির নামটি অনন্য

select * from my_unique_table_name;

তবে আমি মনে করি স্ক্লাইট শেলটি কেবল ম্যানুয়াল অনুসন্ধান বা ম্যানুয়াল ডেটা ম্যানিপুলেশনের জন্য এবং এর জন্য এই উপায়টি আরও অসম্পূর্ণ

সাধারণত আপনি কোনও স্ক্রিপ্টে স্ক্লাইট-কমান্ড-লাইন ব্যবহার করবেন


সংযুক্ত ডাটাবেসগুলিতে টেবিলের নাম একই রকম হলে সমস্ত সংযুক্ত ডেটাবেস থেকে রেকর্ড আনতে এমন একটি নির্বাচনী বিবৃতি পাওয়া সম্ভব কি?
ব্যবহারকারী 826955

5

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

bash-3.2 # sqlite3 UserDb.sqlite
SQLite version 3.16.2 2017-01-06 16:32:41
Enter ".help" for usage hints.

sqlite> .databases
main: /db/UserDb.sqlite

sqlite> .tables
accountLevelSettings  genres               syncedThumbs
collectionActivity    recordingFilter      thumbs
contentStatus         syncedContentStatus 

sqlite> select count(*) from genres;
10

তদতিরিক্ত, আপনি কমান্ড লাইন থেকে আপনার ক্যোয়ারী কার্যকর করতে পারেন:

bash-3.2 # sqlite3 UserDb.sqlite 'select count(*) from genres'
10

আপনি এসকিউএলাইট শেল থেকে অন্য একটি ডাটাবেস ফাইল সংযুক্ত করতে পারেন:

sqlite> attach database 'RelDb.sqlite' as RelDb;

sqlite> .databases
main: /db/UserDb.sqlite
RelDb: /db/RelDb_1.sqlite

sqlite> .tables
RelDb.collectionRelationship  contentStatus               
RelDb.contentRelationship     genres                      
RelDb.leagueRelationship      recordingFilter             
RelDb.localizedString         syncedContentStatus         
accountLevelSettings          syncedThumbs                
collectionActivity            thumbs                      

এই ২ য় ডাটাবেসের টেবিলগুলি ডাটাবেসের উপসর্গের মাধ্যমে অ্যাক্সেসযোগ্য হবে:

sqlite> select count(*) from RelDb.localizedString;
2442

কিন্তু কমান্ড লাইন থেকে কোয়েরি চালানোর জন্য কমান্ড লাইন থেকে একাধিক ডাটাবেস ফাইল নির্দিষ্ট করতে হবে কে জানে?


2
create different db files using
      >sqlite3 test1.db
sqlite> create table test1 (name text);
sqlite> insert into test1 values('sourav');
sqlite>.exit
      >sqlite3 test2.db
sqlite> create table test2 (eid integer);
sqlite> insert into test2 values (6);
sqlite>.exit
      >sqlite
SQLite version 3.8.5 2014-06-04 14:06:34
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open test1.db
sqlite> select * from test1;
sourav
sqlite> .open test2.db
sqlite> select * from test1;
Error: no such table: test1
sqlite> select * from test2;
6
sqlite> .exit
      >

Thank YOU.

2

পুরাতন এসকিউএলাইট কমান্ড-লাইন শেল ( sqlite3.exe) .openকমান্ড বা সহজেই চিহ্নিতযোগ্য বিকল্প সরবরাহ করতে উপস্থিত হবে না ।

যদিও আমি কোনও সুনির্দিষ্ট রেফারেন্স পাইনি বলে মনে হয় .openকমান্ডটি 3.15 সংস্করণে চালু করা হয়েছিল । SQLite রিলিজ ইতিহাস প্রথম উল্লেখ .open2016-10-14 (3.15.0) সঙ্গে কমান্ড।


1

আমি অবাক হয়েছি কেন প্রশ্নটি আসলে কী জিজ্ঞাসা করেছিল তা কেউ কেন পেতে সক্ষম হয় নি? এতে বলা হয়েছে যে ডাটাবেস ফাইল নির্দিষ্ট করতে এসকিউএলাইট শেল টুলের মধ্যে কমান্ডটি কী?

আমার হার্ড ডিস্কে একটি স্ক্লাইট ডিবি রয়েছে E:\ABCD\efg\mydb.db। আমি কীভাবে এটি sqlite3 কমান্ড লাইন ইন্টারফেসের মাধ্যমে অ্যাক্সেস করব? .open E:\ABCD\efg\mydb.dbকাজ করে না. এই প্রশ্ন জিজ্ঞাসা করা হয়।

আমি কাজটি করার সবচেয়ে ভাল উপায়টি খুঁজে পেয়েছি

  • আপনার সমস্ত ডিবি ফাইলকে 1 ডিরেক্টরিতে কপি-পেস্ট করুন (বলুন E:\ABCD\efg\mydbs)
  • আপনার কমান্ড লাইনে সেই ডিরেক্টরিতে স্যুইচ করুন
  • এখন খুলুন sqlite3এবং তারপর.open mydb.db

এইভাবে আপনি বিভিন্ন ডাটাবেসের সাথে সম্পর্কিত বিভিন্ন টেবিলগুলিতে জয়েন অপারেশন করতে পারেন ।


আপনি কি E:প্রথমে চেষ্টা করেছেন ? প্রায়শই উইন্ডোজ চিঠিটি নিজেই পরিবর্তন না করে অন্য ড্রাইভে রেফারেন্সিং ডিরেক্টরি পছন্দ করে না।
অ্যারন ফ্রাঙ্ক

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