Открытие файла базы данных из командной строки SQLite - PullRequest
80 голосов
/ 30 января 2012

Я использую оболочку командной строки SQLite .Как документировано, я могу открыть базу данных, указав ее в качестве аргумента для исполняемого файла:

sqlite3 data.db

Я не могу понять, как открыть файл базы данных из в инструменте после вызоваэто без предоставления файла в качестве аргумента командной строки (если я, скажем, дважды щелкните по sqlite3.exe в Windows). Какая команда в инструменте оболочки SQLite указывает файл базы данных?

Ответы [ 8 ]

101 голосов
/ 30 января 2012

Вы можете присоединить одну и более баз данных и работать с ними таким же образом, как при использовании sqlite.где обычным образом основной используется для командной строки db

.databases
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main                                                                       
1    temp                                                                       
2    ttt              c:\home\user\gg.ite                                   
17 голосов
/ 28 февраля 2014

Я думаю, что самый простой способ просто открыть одну базу данных и начать запросы:

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

Примечание: это работает только для версий 3.8.2 +

9 голосов
/ 31 января 2012

Точно так же, как вы делаете это в другой системе БД, вы можете использовать имя БД для идентификации таблиц с двойным именем.уникальные имена таблиц могут использоваться напрямую.

select * from ttt.table_name;

или если имя таблицы во всех подключенных базах данных уникально

select * from my_unique_table_name;

Но я думаю, что из sqlite-shell только для ручного поиска или для ручного поискаманипулирование данными и поэтому более несущественное

обычно вы используете sqlite-командную строку в скрипте

8 голосов
/ 28 июля 2017

Команда в оболочке Sqlite для открытия базы данных: .open

Синтаксис:

sqlite> .open dbasename.db

Если это новая база данных, которую вы хотели бы создать и открыть, это

sqlite> .open --new dbasename.db

Если база данных существует в другой папке, путь должен быть указан следующим образом:

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

В командной оболочке Windows вы должны использовать «\» для представления каталога, но в SQLite каталоги представлены «/». Если вы по-прежнему предпочитаете использовать нотацию Windows, вы должны использовать escape-последовательность для каждого '\'

2 голосов
/ 17 апреля 2018

Вы можете просто указать имя файла базы данных в командной строке:

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:

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

Но кто знает, как указать несколько файлов базы данных из командной строки для выполнения запроса из командной строки?

1 голос
/ 06 марта 2019

Старые SQLite оболочки командной строки (sqlite3.exe), по-видимому, не предлагают команду .open или какую-либо легко идентифицируемую альтернативу.

Хотя я не нашел окончательной ссылки, кажется,что команда .open была введена в версии 3.15 . История выпуска SQLite сначала упоминает команду .open с 2016-10-14 (3.15.0).

1 голос
/ 14 апреля 2017
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.
1 голос
/ 06 июля 2016

Интересно, почему никто не смог получить то, что на самом деле задал вопрос. В нем указано Какая команда в инструменте оболочки SQLite указывает файл базы данных?

БД sqlite находится на моем жестком диске E:\ABCD\efg\mydb.db. Как мне получить к нему доступ через интерфейс командной строки sqlite3? .open E:\ABCD\efg\mydb.db не работает. Вот что задал вопрос.

Я нашел лучший способ сделать работу -

* * 1010 скопируйте и вставьте все ваши файлы базы данных в 1 каталог (скажем, E:\ABCD\efg\mydbs) переключиться на этот каталог в командной строке теперь откройте sqlite3, а затем .open mydb.db

Таким образом, вы можете выполнить операцию join для разных таблиц, принадлежащих к разным базам данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...