Italian Copiare tabelle da un db a un altro

Fulvio75

Active Member
Licensed User
Ciao a tutti conoscete una soluzione semplice per copiare una tabella da un database SQLite a un altro?
I database sono identici e anche i campi delle tabelle.
Grazie
 

giannimaione

Well-Known Member
Licensed User
da manuale dovrebbe essere qualcosa simile a questo:
B4X:
INSERT INTO NuovoDB.tabella_esistente SELECT * FROM VecchioDB.table_esistente
chiaramente resta da considerare eventuali relazioni, foreing_keys, indici, con altre tabelle
 

Fulvio75

Active Member
Licensed User
da manuale dovrebbe essere qualcosa simile a questo:
B4X:
INSERT INTO NuovoDB.tabella_esistente SELECT * FROM VecchioDB.table_esistente
chiaramente resta da considerare eventuali relazioni, foreing_keys, indici, con altre tabelle
Risolto
ExecNotQuery("ATTACH DATABASE 'percorso/database.db' AS pippo')

Poi
ExecNotQuery("INSERT INTO Pluto.tabella1 SELECT * FROM pippo.tabella1")
Ovvio che pluto.tabella1 deve essere uguale a Pippo.tabella1
 

giannimaione

Well-Known Member
Licensed User
ExecNotQuery("ATTACH DATABASE 'percorso/database.db' AS pippo')
quindi, questa istruzione, serve ad "attaccare" un altro DB; in questo caso database.db. Non sapevo di questo comando:
Gli esami non finiscono mai (Eduardo)
 

Fulvio75

Active Member
Licensed User
quindi, questa istruzione, serve ad "attaccare" un altro DB; in questo caso database.db. Non sapevo di questo comando:
Gli esami non finiscono mai (Eduardo)
Esatto prima fai così:
B4X:
DBConnection.SQLConn.ExecNonQuery("ATTACH DATABASE '" & File.Combine(File.DirRootExternal,"Download/Update.db") & "' AS UpdateDB")

'elimino i dati dalla tabella del db dell'app
DBConnection.SQLConn.ExecNonQuery("DELETE FROM T1")
                   
DBConnection.SQLConn.ExecNonQuery("INSERT INTO T1 SELECT * FROM UpdateDB.T1")

DBConnection.SQLConn.ExecNonQuery("DETACH DATABASE 'UpdateDB'")

ricordati DETACH altrimenti quando richiami nuovamente il db originale inchiodi tutto
 
Top