Sto ripercorrendo tutta la gestione DB nel mio programma ed avrei bisogno, all'occorrenza, di scrivere un file di dump (.txt), contenente tutte le tabelle del DB, allo scopo di poterlo utilizzare qualora dovessi ricostruire una o più tabelle, o addirittura, tutto il DB.
Potrei "Far da me"
, leggendo tutte le tabelle e scaricare il contenuto in file.txt scrivendo all'inizio di ciascun record un campo costante col nome della tabella che scarico, però pensavo ad un file strutturato alla stessa maniera del file di dump che si ottiene in automatico dal gestore manuale di DB-SQLite (in Fedora dispongo di Sqliteman) che produce un file.txt di questo tipo:
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE 'RacCodVoci' ( 'NumVoCassa' INTEGER, 'NumVoColleg' INTEGER, PRIMARY KEY ( 'NumVoCassa') );
CREATE TABLE 'Movimgg' ( 'DtMovvgg' INTEGER, 'OraMovvgg' INTEGER, 'NuProMovvgg' BYTE DEFAULT NULL, 'CoVocMovvgg' INTEGER DEFAULT NULL, 'DescrMovvgg' VARCHAR(100) DEFAULT NULL, 'MonMovvgg' CHAR(1) DEFAULT NULL, 'ImpMovvgg' FLOAT DEFAULT NULL, 'BenefMovvgg' CHAR(1) DEFAULT NULL, PRIMARY KEY ( 'DtMovvgg', 'OraMovvgg') );
CREATE TABLE 'RestaCassagg' ( 'DtCassagg' INTEGER, 'CoVoResCasgg' INTEGER, 'ValCasgg' CHAR(1) DEFAULT NULL, 'ImpCasgg' FLOAT DEFAULT NULL, PRIMARY KEY ( 'DtCassagg', 'CoVoResCasgg') );
CREATE TABLE 'PartMovv' ( 'CoVoPartGlob' INTEGER, 'DtCoPartGlob' INTEGER DEFAULT NULL, 'OraPartGlob' INTEGER, PRIMARY KEY ( 'CoVoPartGlob', 'DtCoPartGlob', 'OraPartGlob') );
CREATE TABLE 'PrestMom' ( 'CoVoPrestMom' INTEGER, 'DtCoPrestMom' INTEGER, 'OraPrestMom' INTEGER, 'StaPrestMom' CHAR(1) DEFAULT NULL, PRIMARY KEY ( 'CoVoPrestMom', 'DtCoPrestMom', 'OraPrestMom') );
CREATE TABLE 'RiepMovMM' ( 'DtRifMM' INTEGER, 'CoVoMovMM' INTEGER, 'MonMovMM' CHAR(1) DEFAULT NULL, 'ImpMovMM' FLOAT DEFAULT NULL, 'BenefMovMM' CHAR(1) DEFAULT NULL, PRIMARY KEY ( 'DtRifMM') );
CREATE TABLE 'RiepMovg' ( 'DtCoMovg' INTEGER, 'StaDtMovg' CHAR(1), 'TotEntrg' INTEGER DEFAULT NULL, 'TotUscg' INTEGER DEFAULT NULL, 'RipFing' INTEGER DEFAULT NULL, PRIMARY KEY ('DtCoMovg') );
CREATE TABLE 'GGAperte' ( 'DtCoGGAp' INTEGER PRIMARY KEY );
CREATE TABLE 'ComponFam' ( 'NuProCompFam' INTEGER, 'NomeCompFam' VARCHAR(20) DEFAULT NULL, PRIMARY KEY ( 'NuProCompFam') );
INSERT INTO "ComponFam" VALUES(1,'Famiglia');
INSERT INTO "ComponFam" VALUES(2,'Piero');
INSERT INTO "ComponFam" VALUES(3,'Giuseppe');
INSERT INTO "ComponFam" VALUES(4,'Giacomo');
CREATE TABLE 'CausaliFreq' ( 'DescrCausFreq' VARCHAR(100), 'DtUltCausFreq' INTEGER );
INSERT INTO "CausaliFreq" VALUES('Vitto',20090601);
INSERT INTO "CausaliFreq" VALUES('bar',20090525);
INSERT INTO "CausaliFreq" VALUES('fotografie per tessera mia',20090409);
CREATE TABLE 'PianCont' ( 'NumVoce' PRIMARY KEY, 'NomeVoce' VARCHAR(50) DEFAULT NULL, 'ContrPartSiNo' CHAR(1) DEFAULT NULL, 'DtPrimoUso' INTEGER DEFAULT NULL );
INSERT INTO "PianCont" VALUES(10000000,'ATTIVO','N',NULL);
INSERT INTO "PianCont" VALUES(10100000,'CASSA','N',NULL);
INSERT INTO "PianCont" VALUES(10100100,'Emolumenti','N',NULL);
INSERT INTO "PianCont" VALUES(10100101,'Stipendio','N',20100122);
INSERT INTO "PianCont" VALUES(10100102,'Pensione INPS','N',NULL);
Lo scopo è di mantenere lo stesso tipo di struttura per potere eventualmente dare al programma lo stesso tipo di input, sia che il dump si faccia, da Sqliteman che dal programma.
Pensavo perciò ad un comando SQL, perchè, se SQLite3 lo fa, chi meglio di SQLite potrebbe avere già di suo lo strumento necessario per poterlo comandare da programma? Ho guardato però la documentazione di "SQLite SQL Language Syntax Diagrams"
http://www.sqlite.org/ e non ho trovato alcuno schema che faccia al caso mio.
Qualcuno ha già sfruttato un'idea del genere e potrebbe accendermi una lampadina?