Как я могу увидеть структуру таблицы в SQLite, поскольку desc
был в Oracle?
Как увидеть структуру таблицы в SQLite?
Ответ 1
Вызвать утилиту sqlite3
в файле базы данных и использовать ее специальные команды точек:
-
.tables
отобразит таблицы -
.schema [tablename]
покажет инструкции (C) CREATE для таблицы или таблиц.
Есть много других полезных встроенных точечных команд - см. документацию в http://www.sqlite.org/sqlite.html, раздел Специальные команды для sqlite3.
Пример:
sqlite> entropy:~/Library/Mail>sqlite3 Envelope\ Index
SQLite version 3.6.12
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
addresses ews_folders subjects
alarms feeds threads
associations mailboxes todo_notes
attachments messages todos
calendars properties todos_deleted_log
events recipients todos_server_snapshot
sqlite> .schema alarms
CREATE TABLE alarms (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, alarm_id,
todo INTEGER, flags INTEGER, offset_days INTEGER,
reminder_date INTEGER, time INTEGER, argument,
unrecognized_data BLOB);
CREATE INDEX alarm_id_index ON alarms(alarm_id);
CREATE INDEX alarm_todo_index ON alarms(todo);
Обратите внимание, что SQLite сохраняет схему и всю информацию о таблицах в самой базе данных, в волшебной таблице с именем sqlite_master, а также может выполнять обычные SQL-запросы к этой таблице. Например, приведенная выше ссылка на документацию показывает, как выводить поведение команд .schema
и .tables
, используя обычные команды SQL (см. Раздел: Запрос схемы базы данных).
Ответ 2
PRAGMA table_info(table_name);
Это будет работать как для командной строки, так и при выполнении для подключенной базы данных.
Ссылка для более подробной информации и примера. спасибо SQLite Pragma Command
Ответ 3
Вы можете запросить sqlite_master
SELECT sql FROM sqlite_master WHERE name='foo';
который будет возвращать SQL-оператор create table
, например:
$ sqlite3 mydb.sqlite
sqlite> create table foo (id int primary key, name varchar(10));
sqlite> select sql from sqlite_master where name='foo';
CREATE TABLE foo (id int primary key, name varchar(10))
sqlite> .schema foo
CREATE TABLE foo (id int primary key, name varchar(10));
sqlite> pragma table_info(foo)
0|id|int|0||1
1|name|varchar(10)|0||0
Ответ 4
.schema TableName
Где TableName - это имя таблицы
Ответ 5
Вы можете увидеть схему, запустив
.schema <table>
Ответ 6
Вы получите структуру, набрав команду:
.schema <tableName>
Ответ 7
Если вы используете PHP, вы можете получить его следующим образом:
<?php
$dbname = 'base.db';
$db = new SQLite3($dbname);
$sturturequery = $db->query("SELECT sql FROM sqlite_master WHERE name='foo'");
$table = $sturturequery->fetchArray();
echo '<pre>' . $table['sql'] . '</pre>';
$db->close();
?>
Ответ 8
Вы можете использовать надстройку Firefox под названием SQLite Manager для четкого просмотра структуры базы данных.
Ответ 9
Я реализовал синтаксический анализатор таблицы SQLite в PHP. Вы можете проверить здесь: я реализовал парсер таблицы sqlite
https://github.com/maghead/sqlite-parser
Синтаксис следует за синтаксисом оператора SQLite create table: http://www.sqlite.org/lang_createtable.html