Quel SQL peut être utilisé pour répertorier les tables et les lignes de ces tables dans un fichier de firebase database SQLite – une fois que je l’ai joint à l’aide de la commande ATTACH
sur l’outil de ligne de commande SQLite 3?
Les fonctions .tables
et .schema
“helper” ne regardent pas les bases de données ATTACHed: elles interrogent simplement la table SQLITE_MASTER
pour la firebase database “main”. Par conséquent, si vous avez utilisé
ATTACH some_file.db AS my_db;
alors vous devez faire
SELECT name FROM my_db.sqlite_master WHERE type='table';
Notez que les tables temporaires ne s’affichent pas non plus avec les .tables
. Vous devez lister sqlite_temp_master
pour cela:
SELECT name FROM sqlite_temp_master WHERE type='table';
Il y a quelques étapes pour voir les tables dans une firebase database SQLite:
Listez les tables dans votre firebase database:
.tables
Répertoriez l’apparence de la table:
.schema tablename
Imprimer le tableau entier:
SELECT * FROM tablename;
Répertorie toutes les commandes d’invite SQLite disponibles:
.help
Il semble que vous deviez passer par la table sqlite_master , comme ceci:
SELECT * FROM dbname.sqlite_master WHERE type='table';
Ensuite, parcourez manuellement chaque table avec un SELECT
ou similaire pour examiner les lignes.
Les commandes .DUMP
et .SCHEMA
ne semblent pas voir la firebase database du tout.
Pour afficher toutes les tables, utilisez
SELECT name FROM sqlite_master WHERE type = "table"
Pour afficher toutes les lignes, je suppose que vous pouvez parcourir toutes les tables et faire un SELECT * sur chacune d’elles. Mais peut-être un DUMP est ce que vous recherchez?
Utilisez .help
pour vérifier les commandes disponibles.
.table
Cette commande affichera toutes les tables de votre firebase database actuelle.
Il existe une commande disponible pour cela sur la ligne de commande SQLite:
.tables ?PATTERN? List names of tables matching a LIKE pattern
Qui convertit au SQL suivant:
SELECT name FROM sqlite_master WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%' UNION ALL SELECT name FROM sqlite_temp_master WHERE type IN ('table','view') ORDER BY 1
Pour lister les tables, vous pouvez également faire:
SELECT name FROM sqlite_master WHERE type='table';
Essayez PRAGMA table_info(table-name);
http://www.sqlite.org/pragma.html#schema
Selon la documentation , l’équivalent de MySQL ‘ SHOW TABLES;
est:
La commande “.tables” est similaire au mode liste de parameters puis exécute la requête suivante:
SELECT name FROM sqlite_master WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%' UNION ALL SELECT name FROM sqlite_temp_master WHERE type IN ('table','view') ORDER BY 1;
Toutefois, si vous vérifiez si une seule table existe (ou pour obtenir ses détails), consultez la réponse à @LuizGeron .
A partir des dernières versions de SQLite 3, vous pouvez émettre:
.fullschema
pour voir toutes vos déclarations de création.
J’utilise cette requête pour l’obtenir:
SELECT name FROM sqlite_master WHERE type='table'
Et pour utiliser dans iOS:
NSSsortingng *aStrQuery=[NSSsortingng ssortingngWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
La méthode la plus simple consiste à ouvrir directement la firebase database et à utiliser la commande .dump
, plutôt que de la joindre après l’appel de l’outil shell SQLite 3.
Donc … (supposons que votre invite de ligne de commande du système d’exploitation est $) au lieu de $sqlite3
:
sqlite3> ATTACH database.sqlite as "attached"
Depuis la ligne de commande de votre système d’exploitation, ouvrez directement la firebase database:
$sqlite3 database.sqlite sqlite3> .dump
Utilisation:
import sqlite3 TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
Via un union all
, combinez toutes les tables en une seule liste.
select name from sqlite_master where type='table' union all select name from sqlite_temp_master where type='table'
Comme personne n’a mentionné la référence officielle de SQLite, je pense qu’il peut être utile de s’y référer sous cette rubrique:
https://www.sqlite.org/cli.html
Vous pouvez manipuler votre firebase database en utilisant les commandes décrites dans ce lien. De plus, si vous utilisez le système d’exploitation Windows et que vous ne savez pas où se trouve le shell de commandes, c’est dans le site de SQLite:
https://www.sqlite.org/download.html
Après le téléchargement, cliquez sur le fichier sqlite3.exe pour initialiser le shell de commande SQLite . Lorsqu’elle est initialisée, cette session SQLite utilise par défaut une firebase database en mémoire et non un fichier sur le disque. Par conséquent, toutes les modifications seront perdues à la fermeture de la session. Pour utiliser un fichier de disque persistant en tant que firebase database, entrez la commande “.open ex1.db” immédiatement après le démarrage de la fenêtre du terminal.
L’exemple ci-dessus permet d’ouvrir et d’utiliser le fichier de firebase database nommé “ex1.db” et de le créer s’il n’existait pas auparavant. Vous pouvez utiliser un chemin d’access complet pour vous assurer que le fichier se trouve dans le répertoire dans lequel vous pensez qu’il se trouve. Utilisez des barres obliques comme caractère séparateur de répertoire. En d’autres termes, utilisez “c: /work/ex1.db”, pas “c: \ work \ ex1.db”.
Pour voir toutes les tables de la firebase database que vous avez précédemment choisi, tapez la commande .tables comme il est dit dans le lien ci-dessus.
Si vous travaillez sous Windows, je pense qu’il pourrait être utile de déplacer ce fichier sqlite.exe vers le même dossier que les autres fichiers Python. De cette manière, le fichier Python écrit et le shell SQLite lit les fichiers .db sur le même chemin.
Le commando “.schema” listera les tables disponibles et leurs lignes, en vous montrant l’instruction utilisée pour créer ces tables:
sqlite> create table_a (id int, a int, b int); sqlite> .schema table_a CREATE TABLE table_a (id int, a int, b int);
.da pour voir toutes les bases de données – une appelée ” main ”
les tableaux de cette firebase database peuvent être vus par
SELECT nom_de_table distinct de l’ordre sqlite_master de 1;
Les bases de données jointes ont besoin de préfixes que vous avez choisis avec AS dans l’instruction ATTACH, par exemple aa (, bb, cc …):
SELECT distinct tbl_name de l’ ordre aa.sqlite_master par 1;
Notez que vous obtenez également les vues. Pour exclure ces add where type = ‘table’ avant ‘order’