Открытие файла базы данных из командной строки SQLite

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

sqlite3 data.db

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

7 ответов


вы можете присоединить одну и даже несколько баз данных и работать с ней так же, как с помощью SQLite dbname.db

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

и u могут видеть все прикрепленные базы данных с .базы данных

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

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

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

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

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


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

select * from ttt.table_name;

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

select * from my_unique_table_name;

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

обычно вы используете SQLite-command-line в скрипте


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

синтаксис такой:

sqlite> .open dbasename.db

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

sqlite> .open --new dbasename.db

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

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

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


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

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

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

  • копировать-вставить все ваши файлы БД в 1 каталог (скажем E:\ABCD\efg\mydbs)
  • переключитесь в этот каталог в командной строке
  • теперь откройте sqlite3 а то .open mydb.db

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


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.

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

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                      

таблицы из 2-й базы данных будут доступны через префикс базы данных:

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

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