[sqlite] SQLite 명령 줄 셸 내에서 데이터베이스 파일 열기

SQLite Command Line Shell을 사용하고 있습니다. 문서화 된대로 실행 파일에 대한 인수로 제공하여 데이터베이스를 열 수 있습니다.

sqlite3 data.db

명령 줄 인수로 파일을 제공하지 않고 도구 를 호출 한 후 도구 내에서 데이터베이스 파일을 여는 방법을 알 수 없습니다 (예 : Windows에서 sqlite3.exe를 두 번 클릭). 데이터베이스 파일을 지정하는 SQLite 셸 도구 내의 명령은 무엇입니까?



답변

하나 이상의 데이터베이스를 연결하고 sqlite dbname.db를 사용하는 것과 같은 방식으로 작업 할 수 있습니다.

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

.databases로 연결된 모든 데이터베이스를 볼 수 있습니다.

일반적인 방법으로 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 이상에서만 작동합니다.


답변

데이터베이스를 여는 Sqlite 셸 내의 명령은 .open입니다.

구문은 다음과 같습니다.

sqlite> .open dbasename.db

생성하여 열고 싶은 새 데이터베이스 인 경우

sqlite> .open --new dbasename.db

데이터베이스가 다른 폴더에있는 경우 경로를 다음과 같이 언급해야합니다.

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

Windows 명령 셸에서는 ‘\’를 사용하여 디렉터리를 나타내야하지만 SQLite 디렉터리는 ‘/’로 표시됩니다. Windows 표기법을 계속 사용하려면 모든 ‘\’에 대해 이스케이프 시퀀스를 사용해야합니다.


답변

다른 db 시스템에서 수행하는 것과 동일한 방법으로 이중 명명 된 테이블을 식별하기 위해 db의 이름을 사용할 수 있습니다. 고유 한 테이블 이름을 직접 사용할 수 있습니다.

select * from ttt.table_name;

또는 연결된 모든 데이터베이스의 테이블 이름이 고유 한 경우

select * from my_unique_table_name;

하지만 sqlite-shell은 수동 조회 또는 수동 데이터 조작 전용이라고 생각하므로이 방법은 더 중요하지 않습니다.

일반적으로 스크립트에서 sqlite-command-line을 사용합니다.


답변

명령 줄에서 간단히 데이터베이스 파일 이름을 지정할 수 있습니다.

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

그러나 명령 줄에서 쿼리를 실행하기 위해 명령 줄에서 여러 데이터베이스 파일을 지정하는 방법을 누가 압니까?


답변

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.


답변

이전 SQLite 명령 줄 셸 ( sqlite3.exe)은 .open명령이나 쉽게 식별 할 수있는 대안 을 제공하지 않는 것으로 보입니다 .

명확한 참조를 찾지 못했지만이 .open명령은 버전 3.15 에서 도입 된 것 같습니다 . SQLite는 릴리스 내역은 먼저 언급 .open2016년 10월 14일 (3.15.0)와 명령을 사용합니다.