Comment peut-on voir la structure d'une table en SQLite? [dupliquer]
cette question a déjà une réponse ici:
Comment puis-je voir la structure de la table dans SQLite comme desc
était dans Oracle?
9 réponses
invoque l'utilitaire sqlite3
sur le fichier de base de données, et utilise ses commandes de points spéciales:
-
.tables
liste des tables -
.schema [tablename]
affichera L'énoncé créer pour une ou plusieurs tables
il y a beaucoup d'autres commandes de point intégrées utiles -- voir la documentation à http://www.sqlite.org/sqlite.html , section special commands to sqlite3 .
exemple:
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);
Notez aussi que SQLite sauvegarde le schéma et toutes les informations sur les tables dans la base de données elle-même, dans une table magique nommée sqlite_master , et il est également possible d'exécuter des requêtes SQL normales contre cette table. Par exemple, le lien de documentation ci-dessus montre comment dériver le comportement des commandes .schema
et .tables
, en utilisant des commandes SQL normales (voir section: interrogation du schéma de la base de données ).
PRAGMA table_info(table_name);
cela fonctionnera à la fois pour: ligne de commande et lorsqu'il est exécuté contre une base de données connectée.
vous pouvez interroger sqlite_master
SELECT sql FROM sqlite_master WHERE name='foo';
qui renvoie une instruction create table
SQL, par exemple:
$ 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
vous devriez pouvoir voir le schéma en exécutant
.schema <table>
, Vous obtiendrez la structure en tapant la commande:
.schema <tableName>
si vous utilisez PHP vous pouvez l'obtenir de cette façon:
<?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();
?>
vous pouvez utiliser L'add-on de Firefox appelé SQLite Manager pour voir la structure de la base de données clairement.
j'ai implémenté un analyseur de schéma de table SQLite en PHP. Vous pouvez vérifier ici: j'ai mis en œuvre un SQLite table parser
https://github.com/maghead/sqlite-parser
la syntaxe suit la syntaxe de la table SQLite create: http://www.sqlite.org/lang_createtable.html