Chi utilizza spatialite avrà avuto, almeno una volta nella vita, la necessità di clonare una tabella cioè di semplificare la copia dei dati tra diverse tabelle dello stesso DB o addirittura di DB esterni. CloneTable() fa al caso nostro, questa nuova feature è stata introdotta a partire dalla versione 4.2.1 di spatialite grazie a A. Furieri. (per maggiori dettagli leggete qui).
In questo articolo vedremo, rapidamente, come clonare una tabella di un DB spatilite:
SELECT CloneTable ('main', 'tabellaInput', 'tabellaOutput', 1);
dove:
- main: rappresenta il DB principale, cioè quello in cui stiamo lavorando (va lasciato cosi se la tabella da clonare si trova nel DB principale);
- tabellaInput: rappresenta il nome della tabella da copiare (che potrebbe essere in un altro DB);
- tabellaOutput: rappresenta il nome della tabella di destinazione (che deve stare sempre nel DB principale);
- 1: cose tecniche che non ci interessano.
CloneTable() supporta numerose opzioni che lo rendono parecchio potente (per maggiori dettagli leggere qui), noi vedremo solo ::append:: che permette di accodare altre righe:
SELECT CloneTable('main','tabellaInput','tabellaOutput',1,'::append::');
Note finali: CloneTable() puo’ essere usato anche per clonare tabelle vuote oppure per aggirare il problema del ALTER TABLE DROP COLUMN.
SELECT CloneTable ('main','old_table','new_table', 1,':: ignore :: foo'); DROP TABLE old_table;
Buon lavoro!!!
2 pensieri su “Come clonare una tabella in spatialite CloneTable()”