Estoy usando el Shell de línea de comandos SQLite . Como se documenta, puedo abrir una base de datos proporcionándola como argumento al ejecutable:
sqlite3 data.db
No puedo averiguar cómo abrir un archivo de base de datos desde dentro de 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?
SELECT * FROM db1.tbl1;
Creo que la forma más sencilla de abrir una sola base de datos y comenzar a consultar es:
sqlite> .open "test.db" sqlite> SELECT * FROM table_name ... ;
Aviso: esto solo funciona para las versiones 3.8.2+
fuente
El comando dentro del shell Sqlite para abrir una base de datos es .open
La sintaxis es,
Si se trata de una nueva base de datos que le gustaría crear y abrir, es
sqlite> .open --new dbasename.db
Si la base de datos existe en una carpeta diferente, la ruta debe mencionarse así:
En el shell de comandos de Windows, debe usar '\' para representar un directorio, pero en SQLite los directorios están representados por '/'. Si aún prefiere usar la notación de Windows, debe usar una secuencia de escape para cada '\'
fuente
De la misma manera que lo hace en otro sistema de base de datos, puede usar el nombre de la base de datos para identificar tablas con nombres dobles. Los nombres de tabla únicos se pueden utilizar 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 de sqlite-shell es solo para búsqueda manual o manipulación manual de datos y, por lo tanto, de esta manera es más intrascendente
normalmente usaría sqlite-command-line en un script
fuente
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:
Las tablas de esta segunda base de datos serán accesibles mediante el prefijo de la base de datos:
sqlite> select count(*) from RelDb.localizedString; 2442
Pero, ¿quién sabe cómo especificar varios archivos de base de datos desde la línea de comando para ejecutar la consulta desde la línea de comando?
fuente
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.
fuente
Los shells de línea de comandos de SQLite más antiguos (
sqlite3.exe
) no parecen ofrecer el.open
comando ni ninguna alternativa fácilmente identificable.Aunque no encontré una referencia definitiva, parece que el
.open
comando se introdujo alrededor de la versión 3.15 . El historial de versiones de SQLite menciona por primera vez el.open
comando con 2016-10-14 (3.15.0).fuente
Me pregunto por qué nadie pudo entender lo que realmente planteaba la pregunta. Declaró ¿Cuál es el comando dentro de la herramienta de shell SQLite para especificar un archivo de base de datos?
Una base de datos sqlite está en mi disco duro
E:\ABCD\efg\mydb.db
. ¿Cómo accedo con la interfaz de línea de comandos sqlite3?.open E:\ABCD\efg\mydb.db
No funciona. Esta es la pregunta que se hizo.Encontré que la mejor manera de hacer el trabajo es
E:\ABCD\efg\mydbs
)sqlite3
y luego.open mydb.db
De esta manera, también puede realizar la operación de unión en diferentes tablas que pertenecen a diferentes bases de datos.
fuente
E:
primero? A menudo, a Windows no le gusta hacer referencia a directorios en otras unidades sin cambiar la letra usted mismo.