Tengo 2 bases de datos SQLite con datos comunes pero con diferentes propósitos y quería evitar volver a insertar los datos, por lo que me preguntaba si era posible copiar una tabla completa de una base de datos a otra.
141
Tendrá que adjuntar la Base de datos X con la Base de datos Y utilizando el comando ATTACH , luego ejecutar los comandos Insertar en apropiados para las tablas que desea transferir.
INSERT INTO X.TABLE SELECT * FROM Y.TABLE;
O, si las columnas no coinciden en orden:
INSERT INTO X.TABLE(fieldname1, fieldname2) SELECT fieldname1, fieldname2 FROM Y.TABLE;
Considere un ejemplo donde tengo dos bases de datos, a saber, allmsa.db y atlanta.db. Digamos que la base de datos allmsa.db tiene tablas para todos los msas en EE. UU. Y la base de datos atlanta.db está vacía.
Nuestro objetivo es copiar la tabla atlanta de allmsa.db a atlanta.db.
Pasos
ATTACH '/mnt/fastaccessDS/core/csv/allmsa.db' AS AM;
nota de comando que le damos a la ruta completa de la base de datos que se adjuntará.sqlite> .databases
puede ver la salida comoINSERT INTO atlanta SELECT * FROM AM.atlanta;
Esto debería servir a su propósito.
fuente
La forma más fácil y correcta en una sola línea:
La clave principal y los tipos de columnas se mantendrán.
fuente
.dump
crea el comandoCREATE TABLE IF NOT EXISTS ...
y no hay ningún error a pesar de que mi tabla de destino existe.Para una acción única, puede usar .dump y .read.
Volcar la tabla my_table de old_db.sqlite
Lea el volcado en new_db.sqlite suponiendo que la tabla no existe
Ahora has clonado tu mesa. Para hacer esto para toda la base de datos, simplemente omita el nombre de la tabla en el comando .dump.
Bonificación: las bases de datos pueden tener diferentes codificaciones.
fuente
Código Objective-C para copiar la tabla de una base de datos a otra base de datos
fuente
Necesitaba mover datos de una base de datos compacta de servidor sql a sqlite, por lo que usando sql server 2008 puede hacer clic derecho en la tabla y seleccionar 'Script Table To' y luego 'Data to Inserts'. Copie las instrucciones de inserción, elimine las instrucciones 'GO' y se ejecutará con éxito cuando se aplique a la base de datos sqlite utilizando la aplicación 'DB Browser for Sqlite'.
fuente
Primer escenario: DB1.sqlite y DB2.sqlite tienen la misma tabla (t1), pero DB1 está más "actualizado" que DB2. Si es pequeño, suelte la tabla de DB2 y vuelva a crearla con los datos:
Segundo escenario: si se trata de una tabla grande, es mejor que tenga una
INSERT if not exists
solución tipo. Si tiene unaUnique Key
columna, es más sencilla; de lo contrario, necesitaría usar una combinación de campos (tal vez todos los campos) y en algún momento aún es más rápido simplementedrop
reajustarcreate
la tabla; siempre es más sencillo (se requiere menos reflexión).LA CONFIGURACIÓN: abra SQLite sin una base de datos que cree una base de datos
temporary
en memoriamain
, luegoattach
DB1.sqlite y DB2.sqlitey use
.databases
para ver las bases de datos adjuntas y sus archivos.fuente
UNIQUE
yPRIMARY KEY
, por lo tanto, si los tiene,DROP TABLE
deberá hacerlo manualmenteCREATE
yINSERT
utilizar el método.dump
y.read
mencionado anteriormente por @Thinkeye.