SQLite 데이터베이스에 대한 테이블의 열 목록을 가져오려면 어떻게 해야 합니까?
테이블에서 열 목록을 검색하는 중입니다.데이터베이스는 SQLite(3.6)의 최신 릴리스입니다.저는 SQL 쿼리에서 이를 수행하는 코드를 찾고 있습니다.열과 관련된 메타데이터에 대한 추가 보너스 포인트(예: 길이, 데이터 유형 등)
당신이 찾고 있는 것을 데이터 사전이라고 합니다.sqlite에서 sqlite_master 테이블(또는 view?)을 쿼리하여 모든 테이블의 목록을 찾을 수 있습니다.
sqlite> create table people (first_name varchar, last_name varchar, email_address varchar);
sqlite> select * from sqlite_master;
table|people|people|2|CREATE TABLE people (first_name varchar, last_name varchar, email_address varchar)
열 정보를 가져오려면 다음을 사용할 수 있습니다.pragma table_info(table_name)
문:
sqlite> pragma table_info(people);
0|first_name|varchar|0||0
1|last_name|varchar|0||0
2|email_address|varchar|0||0
pragma 문에 대한 자세한 내용은 설명서를 참조하십시오.
간단한 방법은 다음과 같습니다.
.schema <table>
그 질문은 오래되었지만 다음 사항은 아직 언급되지 않았습니다.
대부분의 경우 다음 방법으로 헤더를 설정하는 것이 편리합니다.
sqlite> .headers on
그리고나서,
sqlite> SELECT ... FROM table
선택한 모든 필드(*를 선택한 경우 모두)를 표시하는 헤드라인이 출력 맨 위에 표시됩니다.
다음은 현재 데이터베이스의 모든 테이블과 열을 나열하는 SELECT 문입니다.
SELECT m.name as tableName,
p.name as columnName
FROM sqlite_master m
left outer join pragma_table_info((m.name)) p
on m.name <> p.name
order by tableName, columnName
;
그냥 당신의 sqlite 쉘로 들어가세요:
$ sqlite3 path/to/db.sqlite3
그리고 그냥.
sqlite> .schema
그러면 당신은 모든 것을 얻게 될 것입니다.
이것은 모든 테이블을 해당 열과 함께 나열하고, OP 요청에 따라 각 열에 대해 얻을 수 있는 모든 메타데이터를 보너스 포인트로 나열하는 쿼리입니다.
SELECT
m.name AS table_name,
p.cid AS col_id,
p.name AS col_name,
p.type AS col_type,
p.pk AS col_is_pk,
p.dflt_value AS col_default_val,
p.[notnull] AS col_is_not_null
FROM sqlite_master m
LEFT OUTER JOIN pragma_table_info((m.name)) p
ON m.name <> p.name
WHERE m.type = 'table'
ORDER BY table_name, col_id
@David Garoute가 어떻게 해야 하는지 알려줘서 고마워요.pragma_table_info
쿼리에서 작업합니다.
이 쿼리를 실행하여 모든 테이블 메타데이터를 확인합니다.
SELECT * FROM sqlite_master WHERE type = 'table'
위와 같은 기능을 바탕으로 모든 작업을 한 번에 수행할 수 있습니다.
sqlite3 yourdb.db ".schema"
그러면 테이블을 만들 SQL이 제공되며, 이 테이블은 열 목록입니다.
모든 열 이름을 하나의 쉼표로 구분된 문자열로 가져오려면 아래를 사용합니다.
SELECT GROUP_CONCAT(NAME,',') FROM PRAGMA_TABLE_INFO('table_name')
여기서 pragmatable_info는 select 문에 대한 pragma_table_info로 사용되며 GROUP_CONCAT는 모든 필드 이름을 하나의 문자열로 결합하는 것입니다.GROUP_CONCAT의 두 번째 매개 변수에 대해 구분 기호를 전달할 수 있습니다.
알아요, 오랜 시간이 흘렀지만 너무 늦지는 않았어요.저는 통역사로서 TCL과 비슷한 질문을 했고, 몇 번 검색해 본 결과, 저에게 좋은 것을 찾지 못했습니다.그래서 저는 당신의 DB가 "메인"이라는 것을 알고 PRUGMA에 기반한 무언가를 제안합니다.
db eval { PRAGMA main.table_info(<your table name>) } TBL { puts $TBL(name) }
목록을 얻기 위해 어레이를 사용합니다.
set col_list {}
db eval { PRAGMA main.table_info(<your table name>) } TBL { lappend col_list $TBL(name) }
puts $col_list
언급URL : https://stackoverflow.com/questions/604939/how-can-i-get-the-list-of-a-columns-in-a-table-for-a-sqlite-database
'source' 카테고리의 다른 글
조회 결과에서 #N/A 제거 (0) | 2023.04.29 |
---|---|
SVN 리비전 번호를 ASP와 동기화하려면 어떻게 해야 합니까?NET 웹사이트? (0) | 2023.04.29 |
원하지 않는 이상한 Xcode 로그 숨기기 (0) | 2023.04.29 |
'시스템'넷. http.HttpContent'에 'ReadAsync'에 대한 정의가 없고 확장 메서드가 없습니다. (0) | 2023.04.29 |
mongodb의 배열에 있는 모든 요소에서 필드 제거 (0) | 2023.04.29 |