2012-01-29 46 views
65

Tôi đang sử dụng SQLite Command Line Shell. Theo tài liệu, tôi có thể mở cơ sở dữ liệu bằng cách cung cấp cơ sở dữ liệu đó làm đối số cho tệp thực thi:Mở tệp cơ sở dữ liệu từ bên trong vỏ lệnh dòng lệnh SQLite

sqlite3 data.db 

Điều này có vẻ hoàn toàn không quan trọng - và rất gần! - nhưng tôi không thể tìm ra cách mở tệp cơ sở dữ liệu từ trong công cụ sau khi đã gọi nó mà không cung cấp tệp dưới dạng đối số dòng lệnh (nếu tôi, hãy nhấp đúp vào sqlite3.exe trong Windows). Lệnh trong công cụ trình bao SQLite để chỉ định tệp cơ sở dữ liệu là gì?

Trả lời

80

Bạn có thể đính kèm một và thậm chí nhiều cơ sở dữ liệu và làm việc với nó trong cùng một cách như sử dụng SQLite dbname.db

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

và u có thể xem tất cả cơ sở dữ liệu kèm theo .databases

nơi theo cách thông thường, chính được sử dụng cho dòng lệnh db

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

Ah! Cảm ơn bạn. Làm cách nào để chỉ định cơ sở dữ liệu nào tôi muốn sqlite chạy truy vấn của tôi? –

+0

Có bình thường khi emerge tập dữ liệu tạm thời mà không được tạo ra không? –

9

Giống như cách bạn làm điều đó trong hệ thống db khác, bạn có thể sử dụng tên của db để xác định các bảng có tên gấp đôi. các tablenames duy nhất có thể được sử dụng trực tiếp.

select * from ttt.table_name; 

hoặc nếu tên bảng trong tất cả các cơ sở dữ liệu kèm theo là duy nhất

select * from my_unique_table_name; 

Nhưng tôi nghĩ rằng các của SQLite vỏ duy nhất là cho tra cứu thủ công hoặc bằng tay dữ liệu thao tác và do cách này là không quan trọng hơn

thông thường bạn sẽ sử dụng lệnh sqlite-command-line trong một tập lệnh

+0

Có thể có một câu lệnh chọn lấy các bản ghi từ tất cả các cơ sở dữ liệu đính kèm, trong trường hợp tên bảng giống nhau trên các cơ sở dữ liệu đính kèm không? – user826955

11

Tôi nghĩ cách đơn giản nhất để mở một cơ sở dữ liệu và bắt đầu truy vấn là:

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

Chú ý: Đây chỉ hoạt động cho các phiên bản 3.8.2+

+0

Lỗi: lệnh không xác định hoặc đối số không hợp lệ: "mở". Nhập ".help" để được trợ giúp – Ben

+3

@Ben thông báo dấu chấm – rindeal

+0

nó không được liệt kê dưới dạng lệnh mà phiên bản của sqlite bạn đang sử dụng? – lapolonio

1

Tôi tự hỏi tại sao không có ai có thể có được những gì các câu hỏi thực sự hỏi. Nó tuyên bố Lệnh trong công cụ trình bao SQLite để chỉ định một tệp cơ sở dữ liệu là gì?

Một db sqlite nằm trên đĩa cứng của tôi E:\ABCD\efg\mydb.db. Làm cách nào để truy cập nó bằng giao diện dòng lệnh sqlite3? .open E:\ABCD\efg\mydb.db không hoạt động. Đây là câu hỏi được hỏi.

tôi thấy cách tốt nhất để làm việc là

  • copy-paste tất cả các file db của bạn trong 1 thư mục (nói E:\ABCD\efg\mydbs)
  • chuyển sang thư mục đó trong dòng lệnh của bạn
  • bây giờ mở sqlite3 và sau đó .open mydb.db

Bằng cách này bạn có thể thực hiện các hoạt động join trên các bảng khác nhau thuộc khác nhau d cơ sở dữ liệu là tốt.

+0

Bạn đã thử 'E:' trước chưa? Thông thường, Windows không thích tham khảo các thư mục trên các ổ đĩa khác mà không cần thay đổi chữ cái. –

+1

Có nó hoạt động, nhưng điều đó sẽ không khả thi khi bạn cần tham gia các bảng khác nhau từ các cơ sở dữ liệu khác nhau. Cơ sở dữ liệu được đính kèm sẽ không còn được đính kèm khi bạn thoát và thay đổi thư mục. – Ritwik

1
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. 
3

Lệnh trong vỏ Sqlite để mở một cơ sở dữ liệu được .open

Cú pháp là,

sqlite> .open dbasename.db 

Nếu nó là một cơ sở dữ liệu mới mà bạn muốn tạo và cởi mở, nó là

sqlite> .open --new dbasename.db 

Nếu cơ sở dữ liệu tồn tại trong một thư mục khác, đường dẫn phải được đề cập như sau:

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

Trong Windows Command shell, bạn nên sử dụng '\' để đại diện cho một thư mục, nhưng trong thư mục SQLite được đại diện bởi '/'. Nếu bạn vẫn muốn sử dụng ký pháp Windows, bạn nên sử dụng chuỗi thoát cho mỗi '\'

Các vấn đề liên quan