studio manager ejemplos ejemplo datos crear consultas comandos sqlite sqlite3

manager - Apertura de archivo de base de datos desde el shell de línea de comandos de SQLite



sqlite database browser (7)

Estoy usando el shell de línea de comandos de SQLite . Tal como está documentado, puedo abrir una base de datos suministrándola como argumento para el ejecutable:

sqlite3 data.db

No puedo averiguar cómo abrir un archivo de base de datos desde la herramienta después de haberlo invocado sin proporcionar el archivo como un argumento de línea de comandos (si, por ejemplo, hago doble clic en sqlite3.exe en Windows). ¿Cuál es el comando dentro de la herramienta de shell SQLite para especificar un archivo de base de datos?


Creo que la forma más sencilla de abrir una única base de datos y comenzar a consultar es:

sqlite> .open "test.db" sqlite> SELECT * FROM table_name ... ;

Aviso: Esto funciona solo para las versiones 3.8.2+


De la misma manera que lo hace en otro sistema db, puede usar el nombre de la base de datos para identificar tablas nombradas dobles. los nombres de tablas únicos pueden usarse directamente.

select * from ttt.table_name;

o si el nombre de la tabla en todas las bases de datos adjuntas es único

select * from my_unique_table_name;

Pero creo que el uso de sqlite-shell es solo para la búsqueda manual o la manipulación manual de datos y, por lo tanto, de esta manera es más inconsecuente

normalmente usaría sqlite-command-line en un script


El comando dentro del shell Sqlite para abrir una base de datos es .open

La sintaxis es,

sqlite> .open dbasename.db

Si se trata de una nueva base de datos que desea crear y abrir, es

sqlite> .open --new dbasename.db

Si la base de datos está en una carpeta diferente, la ruta debe mencionarse así:

sqlite> .open D:/MainFolder/SubFolder/...database.db

En el shell de comandos de Windows, debe usar ''/' para representar un directorio, pero en los directorios SQLite están representados por ''/''. Si aún prefiere usar la notación de Windows, debe usar una secuencia de escape para cada ''/'


Me pregunto por qué nadie fue capaz de obtener lo que realmente hizo la pregunta. Estableció ¿Cuál es el comando dentro de la herramienta de shell SQLite para especificar un archivo de base de datos?

Un sqlite db está en mi disco duro E:/ABCD/efg/mydb.db ¿Cómo accedo a él con la interfaz de línea de comando sqlite3? .open E:/ABCD/efg/mydb.db no funciona. Esto es lo que preguntamos.

Encontré que la mejor manera de hacer el trabajo es

  • copiar y pegar todos sus archivos db en 1 directorio (digamos E:/ABCD/efg/mydbs )
  • cambiar a ese directorio en su línea de comando
  • ahora abre sqlite3 y luego .open mydb.db

De esta forma, también puede hacer la operación de join en diferentes tablas que pertenecen a diferentes bases de datos.


Puede adjuntar una o más bases de datos y trabajar con ella de la misma manera que con sqlite dbname.db

sqlite3 : sqlite> attach "mydb.sqlite" as db1;

y puede ver todas las bases de datos adjuntas con .databases

donde de manera normal, el principal se utiliza para la línea de comando db

.databases seq name file --- --------------- ---------------------------------------------------------- 0 main 1 temp 2 ttt c:/home/user/gg.ite


Simplemente puede especificar el nombre del archivo de la base de datos en la línea de comando:

bash-3.2 # sqlite3 UserDb.sqlite SQLite version 3.16.2 2017-01-06 16:32:41 Enter ".help" for usage hints. sqlite> .databases main: /db/UserDb.sqlite sqlite> .tables accountLevelSettings genres syncedThumbs collectionActivity recordingFilter thumbs contentStatus syncedContentStatus sqlite> select count(*) from genres; 10

Además, puede ejecutar su consulta desde la línea de comando:

bash-3.2 # sqlite3 UserDb.sqlite ''select count(*) from genres'' 10

Puede adjuntar otro archivo de base de datos desde el shell SQLite:

sqlite> attach database ''RelDb.sqlite'' as RelDb; sqlite> .databases main: /db/UserDb.sqlite RelDb: /db/RelDb_1.sqlite sqlite> .tables RelDb.collectionRelationship contentStatus RelDb.contentRelationship genres RelDb.leagueRelationship recordingFilter RelDb.localizedString syncedContentStatus accountLevelSettings syncedThumbs collectionActivity thumbs

Las tablas de esta segunda base de datos serán accesibles a través del prefijo de la base de datos:

sqlite> select count(*) from RelDb.localizedString; 2442

Pero, ¿quién sabe cómo especificar múltiples archivos de bases de datos desde la línea de comandos para ejecutar la consulta desde la línea de comandos?


create different db files using >sqlite3 test1.db sqlite> create table test1 (name text); sqlite> insert into test1 values(''sourav''); sqlite>.exit >sqlite3 test2.db sqlite> create table test2 (eid integer); sqlite> insert into test2 values (6); sqlite>.exit >sqlite SQLite version 3.8.5 2014-06-04 14:06:34 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite> .open test1.db sqlite> select * from test1; sourav sqlite> .open test2.db sqlite> select * from test1; Error: no such table: test1 sqlite> select * from test2; 6 sqlite> .exit > Thank YOU.