it-swarm-ko.tech

ATTACH로 연 SQLite 데이터베이스 파일에 테이블을 나열하는 방법은 무엇입니까?

SQLite 3 명령 줄 도구에서 ATTACH 명령을 사용하여 테이블과 SQLite 데이터베이스 파일의 해당 테이블에있는 행을 나열하는 데 사용할 수있는 SQL은 무엇입니까?

1113
izb

.tables.schema "helper"함수는 ATTACH 된 데이터베이스를 조사하지 않습니다. "SQLITE_MASTER"테이블에서 "기본"데이터베이스를 쿼리합니다. 결과적으로,

ATTACH some_file.db AS my_db;

그럼 당신은해야합니다.

SELECT name FROM my_db.sqlite_master WHERE type='table';

임시 테이블은 .tables와 함께 표시되지 않습니다. 즉, sqlite_temp_master를 나열해야합니다.

SELECT name FROM sqlite_temp_master WHERE type='table';
524
Anthony Williams

SQLite 데이터베이스의 테이블을 확인하는 몇 가지 단계가 있습니다.

  1. 데이터베이스의 테이블을 나열하십시오.

    .tables
    
  2. 표가 어떻게 보이는지 나열하십시오.

    .schema tablename
    
  3. 전체 표를 인쇄하십시오.

    SELECT * FROM tablename;
    
  4. 사용 가능한 모든 SQLite 프롬프트 명령을 나열하십시오.

    .help
    
1233
Mark Janssen

다음과 같이 sqlite_master 테이블을 탐색해야합니다.

SELECT * FROM dbname.sqlite_master WHERE type='table';

그런 다음 SELECT 또는 유사한 테이블을 수동으로 탐색하여 행을 봅니다.

.DUMP.SCHEMA 명령은 데이터베이스를 전혀 보지 못합니다.

433

모든 테이블을 표시하려면 다음을 사용하십시오.

SELECT name FROM sqlite_master WHERE type = "table"

모든 행을 표시하려면 모든 테이블을 반복 할 수 있고 각각에 대해 SELECT *를 수행 할 수 있습니다. 하지만 덤프가 너를 쫓고있는거야?

153
Christian Davén

사용 가능한 명령을 확인하려면 .help를 사용하십시오.

.table

이 명령은 현재 데이터베이스 아래의 모든 테이블을 표시합니다.

68
Antony.H

이 명령은 SQLite 명령 줄에서 사용할 수 있습니다.

.tables ?PATTERN?      List names of tables matching a LIKE pattern

다음 SQL로 변환됩니다.

SELECT name FROM sqlite_master
WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL
SELECT name FROM sqlite_temp_master
WHERE type IN ('table','view')
ORDER BY 1
40
flubba

표를 나열하려면 다음을 수행하십시오.

SELECT name FROM sqlite_master
WHERE type='table';
36
Rafał Dowgird

시도해보십시오 PRAGMA table_info(table-name);
http://www.sqlite.org/pragma.html#schema

29
Luiz Geron

나는이 쿼리를 사용하여 그것을 얻는다 :

SELECT name FROM sqlite_master WHERE type='table'

그리고 iOS에서 사용하기 :

NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
19
GameLoading

documentation 에 따르면, MySQL의 'SHOW TABLES;'에 해당하는 내용은 다음과 같습니다.

".tables"명령은 목록 모드를 설정 한 후 다음 쿼리를 실행하는 것과 유사합니다.

SELECT name FROM sqlite_master
  WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL
SELECT name FROM sqlite_temp_master
  WHERE type IN ('table','view')
ORDER BY 1;

그러나 단일 테이블이 있는지 (또는 세부 정보를 얻고 있는지) 확인하려면 @LuizGeron answer를 참조하십시오.

15
Alix Axel

SQLite 3의 최신 버전에서 다음을 실행할 수 있습니다 :

.fullschema

모든 create 문을 볼 수 있습니다.

15
pepper

이렇게하는 가장 쉬운 방법은 데이터베이스를 직접 열고 SQLite 3 Shell 도구를 호출 한 후 .dump 명령을 사용하는 것입니다.

따라서 ... ($sqlite3 대신 OS 명령 프롬프트 프롬프트가 $라고 가정하십시오)

sqlite3> ATTACH database.sqlite as "attached"

OS 명령 줄에서 데이터베이스를 직접 엽니 다.

$sqlite3 database.sqlite
sqlite3> .dump
11
Noah

union all를 통해 모든 테이블을 하나의 목록으로 결합하십시오.

select name
from sqlite_master 
where type='table'

union all 

select name 
from sqlite_temp_master 
where type='table'
9
openwonk

용도:

import sqlite3

TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
9
Mrityunjay Singh

아무도 SQLite의 공식 참조에 대해 언급 한 적이 없기 때문에이 제목 아래에서 참조하는 것이 유용 할 수 있다고 생각합니다.

https://www.sqlite.org/cli.html

이 링크에서 설명하는 명령을 사용하여 데이터베이스를 조작 할 수 있습니다. 게다가, 당신이 Windows OS를 사용하고 있다면 그리고 Shell이 ​​어디에 있는지, SQLite의 사이트에 있는지 알지 못한다 :

https://www.sqlite.org/download.html

그것을 다운로드 한 후 sqlite3.exe 파일을 클릭하여 SQLite 명령을 초기화하십시오. Shell . 초기화 될 때 기본적으로이 SQLite 세션은 디스크의 파일이 아니라 메모리 내 데이터베이스를 사용하므로 세션이 종료 될 때 모든 변경 사항이 손실됩니다. 영구 디스크 파일을 데이터베이스로 사용하려면 터미널 창이 시작된 직후 ".open ex1.db"명령을 입력하십시오.

위의 예는 "ex1.db"라는 데이터베이스 파일을 열어 사용하고 이전에 존재하지 않았던 경우 작성합니다. 파일이 있다고 생각되는 디렉토리에 전체 경로 이름을 사용할 수 있습니다. 디렉토리 분리 문자로 슬래시를 사용하십시오. 즉 "c :\work\ex1.db"가 아닌 "c : /work/ex1.db"를 사용하십시오.

이전에 선택한 데이터베이스의 모든 테이블을 보려면 위의 링크에서 설명한대로 .tables 명령을 입력하십시오.

Windows에서 작업하는 경우이 sqlite.exe 파일을 다른 Python 파일과 동일한 폴더로 옮기는 것이 유용 할 수 있습니다. 이 방법으로 Python 파일에 쓰고 .db 파일에서 SQLite 셸 읽기는 같은 경로에 있습니다.

7
oiyio

".schema"명령은 해당 테이블을 만드는 데 사용 된 명령문을 보여줌으로써 사용 가능한 테이블과 해당 행을 나열합니다.

sqlite> .schema table_a 
 CREATE TABLE table_a (id int, int, int); [sqlite> .____.]
5
trf

.da 모든 데이터베이스를 볼 수 있습니다 - 하나는 ' main '

이 데이터베이스의 테이블은

Sqlite_master order에서 distinct tbl_name을 1 씩 선택합니다.

첨부 된 데이터베이스에는 ATTACH 문에 AS와 함께 선택한 접두사가 필요합니다. aa (, bb, cc ...) 그래서 :

aa.sqlite_master에서 distinct tbl_name을 선택하십시오. order by 1;

여기에서 당신은보기를 또한 얻는다는 것을 유의하십시오. 이러한 add를 제외하려면 type = 'table'before 'order'

1
Klaas-Z4us-V