Как можно увидеть структуру таблицы в SQLite? [дубликат]

этот вопрос уже есть ответ здесь:

  • есть ли эквивалент SQLite для описания MySQL [таблица]? 5 ответов

Как я могу видеть структуру таблицы в SQLite as desc был в Oracle?

9 ответов


вызов sqlite3 утилита в файле базы данных и используйте ее специальные команды dot:

  • .tables список таблиц
  • .schema [tablename] покажет оператор(ы) CREATE для таблицы или таблиц

есть много других полезных команд builtin dot -- см. документацию по адресу 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 (см. раздел: запрос к базе данных схема).


PRAGMA table_info(table_name);

Это будет работать как для командной строки, так и при выполнении с подключенной базой данных.


вы можете сделать запрос sqlite_master

SELECT sql FROM sqlite_master WHERE name='foo';

что вернет create table инструкция SQL, например:

$ 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

.schema TableName

где TableName-имя таблицы


вы должны иметь возможность видеть схему, запустив

.schema <table>

вы получите структуру, введя команду:

.schema <tableName>

Если вы используете 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();
?>

вы можете использовать надстройку Firefox под названием SQLite Manager просмотра структуры базы данных.


я реализовал синтаксический анализатор схемы таблицы SQLite в PHP. Вы можете проверить здесь: я реализовал парсер таблицы sqlite

https://github.com/maghead/sqlite-parser

синтаксис следует синтаксису инструкции SQLite create table:http://www.sqlite.org/lang_createtable.html