Używam powłoki wiersza poleceń SQLite . Zgodnie z dokumentacją mogę otworzyć bazę danych, dostarczając ją jako argument do pliku wykonywalnego:
sqlite3 data.db
Nie mogę dowiedzieć się, jak otworzyć plik bazy danych z poziomu narzędzia po wywołaniu go bez podania pliku jako argumentu wiersza poleceń (jeśli, powiedzmy, dwukrotnie kliknę sqlite3.exe w systemie Windows). Jakie polecenie w narzędziu powłoki SQLite służy do określenia pliku bazy danych?
SELECT * FROM db1.tbl1;
Myślę, że najprostszym sposobem na otwarcie pojedynczej bazy danych i rozpoczęcie zapytań jest:
sqlite> .open "test.db" sqlite> SELECT * FROM table_name ... ;
Uwaga: działa to tylko dla wersji 3.8.2+
źródło
Polecenie w powłoce Sqlite do otwarcia bazy danych to .open
Składnia to:
Jeśli jest to nowa baza danych, którą chciałbyś utworzyć i otworzyć, tak właśnie jest
sqlite> .open --new dbasename.db
Jeśli baza danych znajduje się w innym folderze, ścieżkę należy podać w następujący sposób:
W powłoce poleceń Windows powinieneś używać „\” do reprezentowania katalogu, ale w katalogach SQLite są reprezentowane przez „/”. Jeśli nadal wolisz używać notacji Windows, powinieneś użyć sekwencji ucieczki dla każdego „\”
źródło
W ten sam sposób, w jaki robisz to w innym systemie baz danych, możesz użyć nazwy bazy danych do identyfikacji podwójnie nazwanych tabel. unikalne nazwy tabel mogą być używane bezpośrednio.
select * from ttt.table_name;
lub jeśli nazwa tabeli we wszystkich dołączonych bazach danych jest unikalna
select * from my_unique_table_name;
Ale myślę, że z sqlite-shell służy tylko do ręcznego wyszukiwania lub ręcznej manipulacji danymi i dlatego jest to bardziej nieistotne
normalnie użyłbyś linii poleceń sqlite w skrypcie
źródło
Możesz po prostu podać nazwę pliku bazy danych w wierszu poleceń:
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
Ponadto możesz wykonać swoje zapytanie z wiersza poleceń:
bash-3.2 # sqlite3 UserDb.sqlite 'select count(*) from genres' 10
Możesz dołączyć inny plik bazy danych z powłoki SQLite:
Tabele z tej drugiej bazy danych będą dostępne za pośrednictwem prefiksu bazy danych:
sqlite> select count(*) from RelDb.localizedString; 2442
Ale kto wie, jak określić wiele plików bazy danych z wiersza poleceń, aby wykonać zapytanie z wiersza poleceń?
źródło
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.
źródło
Wydaje się, że starsze powłoki wiersza poleceń SQLite (
sqlite3.exe
) nie oferują tego.open
polecenia ani żadnej łatwej do zidentyfikowania alternatywy.Chociaż nie znalazłem ostatecznego odniesienia, wydaje się, że
.open
polecenie zostało wprowadzone około wersji 3.15 . SQLite Release Historia Pierwsze wzmianki o.open
polecenie z 2016-10-14 (3.15.0).źródło
Zastanawiam się, dlaczego nikt nie był w stanie zrozumieć tego, o co chodziło w rzeczywistości. Stwierdzono, jakie polecenie w narzędziu powłoki SQLite określa plik bazy danych?
Na moim dysku twardym znajduje się baza danych sqlite
E:\ABCD\efg\mydb.db
. Jak uzyskać do niego dostęp za pomocą interfejsu wiersza poleceń sqlite3?.open E:\ABCD\efg\mydb.db
nie działa. Oto jakie zadano pytanie.Znalazłem najlepszy sposób na wykonanie tej pracy
E:\ABCD\efg\mydbs
)sqlite3
a potem.open mydb.db
W ten sposób możesz wykonać operację łączenia również na różnych tabelach należących do różnych baz danych.
źródło
E:
pierwszy? Często system Windows nie lubi odwoływać się do katalogów na innych dyskach bez samodzielnej zmiany litery.