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

65

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

sqlite3 data.db

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

Теги:
sqlite3

6 ответов

79
Лучший ответ

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

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

и вы можете видеть все прикрепленные базы данных с помощью   .databases

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

.databases
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main                                                                       
1    temp                                                                       
2    ttt              c:\home\user\gg.ite                                   
  • 14
    Ах! Спасибо. Как мне указать, в какой базе данных sqlite будет выполнять мои запросы?
  • 0
    Нормально ли создавать временный набор данных без создания?
11

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

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

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

  • 1
    Ошибка: неизвестная команда или недопустимые аргументы: «открыто». Введите ".help" для помощи
  • 3
    @ Обратите внимание на точку
Показать ещё 2 комментария
9

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

select * from ttt.table_name;

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

select * from my_unique_table_name;

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

обычно вы использовали бы sqlite-command-line в script

  • 0
    Можно ли использовать оператор select, который выбирает записи из всех подключенных баз данных, если имя таблицы одинаково для всех подключенных баз данных?
3

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

Синтаксис:

sqlite> .open dbasename.db

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

sqlite> .open --new dbasename.db

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

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

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

1

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

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

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

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

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

  • 0
    Вы пробовали E: сначала? Часто Windows не любит ссылаться на каталоги на других дисках, не меняя буквы самостоятельно.
  • 1
    Да, это работает, но это будет невозможно, если вам нужно объединить разные таблицы из разных баз данных. Прикрепленные базы данных больше не будут подключаться после выхода и изменения каталога.
0
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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню