テーブルの列のリストを取得しようとしています。データベースはSQLiteの最新リリースです(3.6と思います)。SQLクエリでこれを行うコードを探しています。列に関連するメタデータの追加ボーナスポイント(長さ、データ型など)
テーブルの列のリストを取得しようとしています。データベースはSQLiteの最新リリースです(3.6と思います)。SQLクエリでこれを行うコードを探しています。列に関連するメタデータの追加ボーナスポイント(長さ、データ型など)
回答:
あなたが探しているものはデータ辞書と呼ばれています。sqliteでは、sqlite_masterテーブル(またはビュー?)
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
プラグマステートメントの詳細については、ドキュメントを参照してください。
select * from
ませんか?
簡単な方法は次のとおりです。
.schema <table>
質問は古いですが、以下はまだ言及されていません。
多くの場合、もう1つの便利な方法は、次の方法でヘッダーをオンにすることです。
sqlite> .headers on
そして、
sqlite> SELECT ... FROM table
選択したすべてのフィールド(SELECT *を選択した場合はすべて)を示す見出しが出力の上部に表示されます。
LIMIT 5
。;
最後に忘れないでください。
現在のデータベースのすべてのテーブルと列を一覧表示する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
;
ORDER BY
にをtableName, p.cid
。
これは、すべてのテーブルとその列、および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
pragma_table_info
クエリで作業する方法を教えてくれた@David Garoutteに感謝します。
このクエリを実行して、すべてのテーブルメタデータを表示します。
SELECT * FROM sqlite_master WHERE type = 'table'
久しぶりですが、遅すぎることはありません…TCLを通訳として同様の質問をしましたが、何回か検索した結果、私にとって何も良いことは見つかりませんでした。それで、私はあなたのDBが「メイン」であることを知って、PRAGMAに基づいた何かを提案します
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