2008-11-22 11 views
29

Siento que esta es una pregunta estúpida porque parece de sentido común. . . ¡pero ninguna búsqueda en Google que pueda armar parece ser capaz de darme la respuesta!Importación de un volcado de SQLite3 a la base de datos

Sé cómo sacar datos de una base de datos sqlite3 utilizando el comando .dump. Pero ahora que tengo este archivo ASCII titulado export.sqlite3.sql. . . Parece que no puedo regresar a la base de datos que quiero.

Mi objetivo era transferir los datos que tenía en una aplicación de rieles a otra, así que no tuve que tomar todo tipo de tiempo creando datos ficticios de nuevo. . . así que descarté los datos de mi primera aplicación, me deshice de todas las declaraciones de CREATE TABLE y me aseguré de que mi esquema en mi segunda aplicación coincida. . . ahora solo tengo que meterlo ahí.

¿Alguien podría ayudarme? Y cuando encuentres un camino, ¿me dirás lo que conectaste al google, porque ahora me estoy golpeando la cabeza con una cuchara sobre lo que pensé que sería un hallazgo fácil?

Respuesta

49
cat dumpfile.sql | sqlite3 my_database.sqlite 

This is modified from the sqlite3 getting started guide.

+17

Excelente respuesta. A riesgo de sonar como un disco roto, este es un uso inútil del gato. Redirección es la respuesta: sqlite3 my_database.sqlite converter42

+0

Estoy de acuerdo, generalmente lo uso en el

+0

Recomiendo anteponer "PRAGMA journal_mode = OFF; PRAGMA synchronous = OFF;" al archivo de volcado antes de ejecutar esto. Esto hace que las restauraciones sean mucho más rápidas. Obviamente, estas configuraciones no deberían estar DESACTIVADAS cuando en realidad * usan * la base de datos restaurada. – Brian

37

no se hayan indicado su sistema operativo y mientras

sqlite3 my_database.sqlite < export.sqlite3.sql 

funcionará para las versiones de Unix, no va a funcionar para las ventanas.

La inversa del comando .dump es el comando .read. La sintaxis sería

sqlite3> .read export.sqlite3.sql 
+0

Unix Flavors comando no funciona ..¿Restauraste usando esto? –

+0

sí, pero tenga en cuenta que sqlite3> no es un comando unix, es el prompt sqlite3 – Noah

+0

tengo la solución sin declaración de exportación que restaura .. Gracias de todos modos –

2

Esto también debería funcionar:

echo '.read export.sqlite3.sql' | sqlite3 my_database.sqlite3 

Una posible ventaja sobre "sqlite3 my_database.sqlite3 < export.sqlite3.sql" es que la orden de SQLite .read podría (ahora o en el futuro) más avanzado que sólo "leer en todo el texto y ejecútelo ". Podría hacer lotes, lo que reduciría el uso de memoria para volcados grandes. Sin embargo, admito que esta es una ventaja bastante oscura e improbable. Con toda probabilidad, .read simplemente lee cada línea de la entrada y la ejecuta, al igual que la redirección y los operadores de tubería.

+0

Error: no se puede abrir "export./home/ubuntu/trydatabase/ newsql.sql " usando este comando –

0

Utilice esto para los sabores de Unix.

pulse Ctrl + Alt + T y escribir

sqlite3 /home/ubuntu/output.sqlite < /home/ubuntu/input.sql 

Es restaurar la base de datos del archivo de entrada.

+1

¿Qué hace 'Ctrl + alt + T' en todos los sabores de Unix? – mwfearnley

+0

Abre la terminal. –

Cuestiones relacionadas