Pour les tests de régression, j'ai besoin de vider tout le contenu d'une base de données SQLite dans un fichier texte. Mais toutes les références à ce type d'activité conduisent uniquement à des guides utilisant l'exécutable sqlite. Existe-t-il un moyen en Perl de le faire sans l'exécutable?Comment vider le contenu d'une base de données SQLite sans utiliser la ligne de commande, mais en code Perl?
Répondre
Vous pouvez utiliser les méthodes DBI standard pour interroger le schéma. La page de manuel DBD :: SQLite dit:
Voir aussi la documentation de DBI pour les détails des autres méthodes courantes.
table_info
$sth = $dbh->table_info(undef, $schema, $table, $type, \%attr);
Renvoie tous les tableaux et schémas (bases de données) comme spécifié dans "table_info" dans DBI. Le schéma et les arguments de table effectueront une recherche "LIKE" . Vous pouvez spécifier un caractère ESCAPE en incluant un attribut 'Escape' dans \% attr. L'argument type $ accepte une liste séparée par des virgules des types suivants
« table », « VIEW », « TEMPORAIRE LOCAL » et « SYSTEM TABLE » (par défaut, tous sont retournés ). Notez qu'une instruction handle est renvoyée, et non une liste directe
de tables.
Une option consiste à voler l'implémentation .dump
à partir du code source du programme sqlite.
Merci, pas aussi propre qu'une fonction, mais cela fonctionne. :) – Mithaldu