Programing

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

lottogame 2020. 9. 21. 22:19
반응형

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

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


질문이 실제로 질문 한 내용을 아무도 얻지 못한 이유가 궁금합니다. 데이터베이스 파일을 지정하는 SQLite 셸 도구 내의 명령무엇입니까?

sqlite db가 내 하드 디스크에 E:\ABCD\efg\mydb.db있습니다. sqlite3 명령 줄 인터페이스로 어떻게 액세스합니까? .open E:\ABCD\efg\mydb.db작동하지 않습니다. 이것이 질문 한 것입니다.

작업을 수행하는 가장 좋은 방법은

  • copy-paste all your db files in 1 directory (say E:\ABCD\efg\mydbs)
  • switch to that directory in your command line
  • now open sqlite3 and then .open mydb.db

This way you can do the join operation on different tables belonging to different databases as well.


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.

Older SQLite command-line shells (sqlite3.exe) do not appear to offer the .open command or any readily identifiable alternative.

Although I found no definitive reference it seems that the .open command was introduced around version 3.15. The SQLite Release History first mentions the .open command with 2016-10-14 (3.15.0).

참고URL : https://stackoverflow.com/questions/9057787/opening-database-file-from-within-sqlite-command-line-shell

반응형