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.