sqlite - How does the command tool command .dump affect connected applications? - sqlite

I'd like to know how the .dump command affects other applications connected to the same database. I'd like to know this for the following journal modes:
DELETE (the default mode)
WAL (write-ahead-logging)
From reading other posts on this forum .backup uses the online backup API of SQLite. It would be great to have this confirmed as well.
Thanks in advance!

The .dump command reads the contents of the database normally, just as if you would do a bunch of SELECT queries inside a transaction.
This means that when not using WAL, other connections cannot write as long as the dump is running.

Related

Opening up database and saving the queries

I would need to return a homework.
In the homework i should open up an existing database: hw2tennis.db with sqlite3 and do some basic queries and then return it as .sql file. (I assume that .sql -datafile is the same as .db that I have used to put to the end of every database)
At the moment I know how I can open up a database in sqlite3 and I know how to do basic queries. To my understanding SQLite automatically writes on disk the changes so I don't need to save or anything when I do changes to tables and so on.
But I was wondering, is there a way to save the file in a way, that when someone opens it up, they will see the Queries I have made to it.
For example, if task 1 is:
Print all players and their information
So basically, I would write to SQlite: SELECT * FROM Player;
But, when I open up the hw2tennis.db again, there is only the tables and not the queries which is of course logical.
So can I save the FILE in a way that the teacher can see the queries made?
Thanks!
Just answered to your another question at opening up a database
You can save your queries and outputs in a directory of your Windows system (per your screenshot) and send them with the SQLite DB file to your teachers
There're some nice and free GUI tools that you can use:
DB Browser for SQLite at https://sqlitebrowser.org/
SQLiteStudio at https://sqlitestudio.pl/
DBeaver at https://dbeaver.io/ (support multiple platforms)
...etc.

How to run VACUUM on MBTiles database?

I'm using MapProxy to create an MBTiles database. After I delete files with mapproxy-seed.exe --cleanup, I know that I will need to run vacuum, as in this mailing list answer:
when you remove larger blocks of tiles, you need to do a
vacuum
and this other mailing list answer:
SQLite does not "release memory” if you remove records, but it will re-use the space.
See https://sqlite.org/lang_vacuum.html but be aware that your cache in unavailable during VACUUM.
But how do I actually run the VACUUM process? Do I need to connect to my .mbtiles database with an external manager, or can I run this from the command line somehow?
VACUUM is an SQL statement that you run like any other SQL statement.
If you don't have any other mechanism, download the tools package and run:
sqlite3.exe MyMBTiles.db vacuum

BASH: SQLite3 .backup command

I'm trying to back up my db using a BASH script while having an application use it at the same time.
The application is not a heavy write application.
I've seen different solutions on SO, but want to confirm the correct way. I want users the ability to read at any time during the backup, writing is not a concern since I do all the writing (blog app).
Are there any dangers in corruption using:
sqlite3 /var/www/ghost/content/data/ghost.db <<EOF
.timeout 20000
.backup tmp.db
EOF
The .backup command uses SQLite's backup API, which is designed for online backups.
As long as you do not do have broken hardware or software (which has nothing to with backups and would affect any writes), this will work fine.

New to sqlite3, how do I execute .sql code on .db3 files?

Very basic question, having a hard time finding an explanation online.
I have a file code.sql that can be run on two different databases, a.db3 and b.db3. I used sqlite a.db3 to open the database in sqlite3. How do I run code.sql on it?
Use the .read code.sql command, or call sqlite3 with the file as input: sqlite3 a.db3 < code.sql.
I am guessing that you are trying to use the sqlite3 command line tool that you can dowload from the sqlite.org website.
I recomend that you use, instead, sqlitestudio http://sqlitestudio.one.pl
This has a feature to execute SQL from a file on a database:
Use DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.
You can download the DB Browser at SQLite https://sqlitebrowser.org/

Accessing .sqlite db from phpmyadmin? FF cookies

I'm trying to view my firefox cookies db (cookies.sqlite). Since I've never accessed dbs with anything other than phpmyadmin, I'm at a loss as to how to view the content of this sqlite file. There's localhost/sqlitemanager, but I'd rather stick to the phpmyadmin interface that I'm used to.
Any ideas how I can open/view this sqlite db the normal way in phpmyadmin? Is it possible?
Thanks in advance
P.S. I know that browser cookies are very commonly accessed/played with. If you know another tool that's more specific for this goal, please drop me an answer or suggest in the comments.
There are also several web interfaces for sqlite.
phpSQLiteAdmin
SQLiteManager
Simple SQLite Manager
SQLite Admin
WizSQLiteAdmin
ezSqliteAdmin
SQLiteWebAdmin
knoda
I have not yet tried any of them - in fact, I found this SO question while researching sqlite web front-ends for my own use. But I, too, come from a phpMyAdmin background, so the first one I plan to try is phpSQLiteAdmin.
I imagine there are various GUI programs that will hold your hand. However, I'm going to show you what I would do if I was interested in table moz_cookies in db cookies.sqlite.
$
$ sqlite3 cookies.sqlite
SQLite version 3.5.9
Enter ".help" for instructions
sqlite> .schema
CREATE TABLE moz_cookies (id INTEGER PRIMARY KEY, name TEXT, value TEXT, host TEXT, path TEXT,expiry INTEGER, lastAccessed INTEGER, isSecure INTEGER, isHttpOnly INTEGER);
sqlite> select * from moz_cookies limit 1;
1248713741170186|PREF|ID=12d44375be9e7c86:U=d07dae1b87f4537c:LD=en:NR=100:TM=1248713740:LM=1254091506:FV=2:IG=3:S=Jdo_PXt92J5ojL6E|.google.com|/|1317163505|1255144201180851|0|0
sqlite>
You may want the sqlite3 CLI program. It is available on Unix and Windows.
SQLITE3(1) SQLITE3(1)
NAME
sqlite3 - A command line interface for SQLite version 3
SYNOPSIS
sqlite3 [options] [databasefile] [SQL]
SUMMARY
sqlite3 is a terminal-based front-end to the SQLite library that can
evaluate queries interactively and display the results in multiple for‐
mats. sqlite3 can also be used within shell scripts and other applica‐
tions to provide batch processing features.
DESCRIPTION
To start a sqlite3 interactive session, invoke the sqlite3 command and
optionally provide the name of a database file. If the database file
does not exist, it will be created. If the database file does exist,
it will be opened.
It has two categories of operations.
Commands intended directly for the interactive shell begin with .. Anything is an SQL query terminated as usual with ;.
Adminer is a PHPMyAdmin-like system that has support for MySQL, PostgreSQL, SQLite, MS SQL, Oracle, SimpleDB, Elasticsearch, MongoDB, etc.

Resources