SQLite

SQLite version: 3.44.0 SQLite 通过文件来保存数据库,一个文件就是一个数据库 commands # archlinux install sqlite sudo pacman -S sqlite # ubuntu sudo apt install sqlite3 # 打开一个已经存在的数据库 sqlite3 /var/lib/enx-api/enx.db # 启动 sqlite sqlite3 # 列出数据库文件和名字 .databases # query schema, 列出所有的表 .table # 查看表结构, 注意, 表名后面没有分号 .schema table0 # 创建数据库 sqlite3 /data/rssx/rssx.db # insert data insert into table_0 (name) values ('foo'); CREATE TABLE if not exists table_1 (name varchar(50) collate nocase PRIMARY KEY, create_time timestamp DEFAULT NULL); insert into table_1 (name) values ('foo'); insert into table_1 (name) values ('Foo'); -- Runtime error: UNIQUE constraint failed: table_1.name (19) # help .help # show tables .tables # insert # alter table, rename alter table feed rename to feeds; COLLATE NOCASE 列定义里的 COLLATE NOCASE 表示该列上的字符串比较不区分大小写(主要覆盖 ASCII 的 A–Z / a–z)。 ...

Created 5056-01-05 · Updated 28286-08-28 · 5 min · 874 words · -

DuckDB: 嵌入式 OLAP 数据库

DuckDB DuckDB 是一个进程内(in-process)的分析型数据库,常被称作「分析界的 SQLite」:不需要单独的服务进程,一个库文件就是一个数据库,直接嵌入到应用里运行。区别在于它面向 OLAP——列式存储、向量化执行,为聚合与扫描大量数据做优化。 官网:https://duckdb.org/ 单文件数据库,零依赖,零配置 可直接查询 CSV / Parquet / JSON 文件,不必先导入 与 Python / R / Pandas / Arrow 深度集成 安装 # archlinux sudo pacman -S duckdb # macOS brew install duckdb # Python pip install duckdb CLI 常用命令 -- 打开或新建一个数据库文件 duckdb my.duckdb -- 纯内存模式(进程退出即丢失) duckdb .tables -- 列出所有表 .schema table0 -- 查看表结构 .mode box -- 结果以表格形式输出 .timer on -- 显示查询耗时 .help .quit 直接查询文件 DuckDB 最实用的能力:把文件当表用,不用建表和导入。 ...

Created 28286-08-28 · Updated 28286-08-28 · 2 min · 290 words · -

Litestream

简介 Litestream 是一个开源工具,专为 SQLite 设计,以 sidecar 进程的方式运行,持续监听 SQLite 的 WAL(Write-Ahead Log),实时将变更流式同步到对象存储(S3、GCS、Azure Blob 等)。 核心特点: 不改应用代码:应用仍然正常读写 SQLite,Litestream 在旁边透明工作 实时增量复制:默认每秒同步一次 WAL frames,不是全量快照 RPO 秒级:最多丢失几秒内的写入,远优于每日全量备份的 24 小时 RPO 可恢复到任意时间点:S3 上保留完整的 WAL 历史,支持 point-in-time restore 工作原理 应用写 SQLite (enx.db) └─ SQLite WAL 机制产生变更帧 └─ Litestream 监听 WAL └─ 定期上传 WAL frames 到 S3 └─ S3 保留完整变更历史 恢复时,Litestream 从 S3 下载快照 + WAL frames,重放到指定时间点。 安装 # Arch Linux yay -S litestream-bin # 直接下载二进制(Linux amd64) wget https://github.com/benbjohnson/litestream/releases/latest/download/litestream-linux-amd64.tar.gz tar -xzf litestream-linux-amd64.tar.gz sudo mv litestream /usr/local/bin/ 配置 创建配置文件 /etc/litestream.yml: ...

Created 18186-05-18 · Updated 18186-05-18 · 2 min · 238 words · -

sqlite 数据库字典

sqlite 数据库字典 http://blog.itpub.net/133735/viewspace-757028/ http://www.th7.cn/Article/sj/ms/201001/374550.html

Created 6066-03-06 · Updated 6066-03-06 · 1 min · 4 words · -

sqlite command

sqlite command 在列模式下,每条记录在一个单独地行中以数据列对齐的方式显示。列如: sqlite> .mode column 显示 列名.header on 查出所有的表: select name from sqlite_master where type=‘table’ order by name; 通过以下语句可查询出某个表的所有字段信息 PRAGMA table_info([tablename]) cur.execute(“PRAGMA table_info(table)”) print cur.fetchall() http://duduhehe.iteye.com/blog/1344858 http://www.cnblogs.com/riskyer/p/3333809.html Go sqlite import ( "database/sql" "fmt" _ "github.com/mattn/go-sqlite3" "rssx/utils/logger" ) func test() { db, err := sql.Open("sqlite3", "./foo.db") checkErr(err) createTable := `CREATE TABLE if not exists users ( id char(36) PRIMARY KEY NOT NULL, name varchar(50) DEFAULT NULL, create_time timestamp DEFAULT NULL ); ` r, err := db.Exec(createTable) checkErr(err) logger.Infof("%+v", r) stmt, err := db.Prepare("INSERT INTO `users` VALUES (?,?,?);") checkErr(err) res, err := stmt.Exec(0, "wiloon", "2017-12-07 22:10:49") checkErr(err) id, err := res.LastInsertId() checkErr(err) fmt.Println(id) db.Close() } func checkErr(err error) { if err != nil { logger.Errorf("err: %v", err) } } 导出, export, dump, 导入, import, read # export sqlite3 db/boardsprofile.db ".dump" > /var/ftp/profile.sql # import sqlite3 test.db ".read /var/ftp/profile.sql"

Created 17176-01-17 · Updated 17176-01-17 · 1 min · 137 words · -

adb shell sqlite DB

adb shell sqlite DB 在Android应用程序开发中,我们有时可能会用到系统中自带内嵌的数据库sqlite3,例如我们在某个应用程序中创建了数据库,如何查看该数据库或者如何查看该数据库中包含有哪些表或数据。下面是我在应用程序中创建了一个数据库以及表,如何采用命令行的方式去查看该数据库和表 cd /data/data/com.wiloon.android.rsslab/databases sqlite3 RssLab .tables select * from tag; com.wiloon.android.rsslab 是包名. RssLab 是数据库名. tag: 表名 .exit 退出. 查看字段名 .header on 查看sqlite3表结构的命令 在android下通过adb shell命令可以进入sqlite3的命令行client,见: 在android命令行下使用sqlite3。 如果想列出该数据库中的所有表,可: .table 如果想查看这些表的结构: select * from sqlite_master where type=“table”; 可以看到类似: 默认情况下,不会出现红框中的表头,需要之前设置,命令为: .header on 如果只想查看具体一张表的表结构,比如查看emperors表,命令为: select * from sqlite_master where type=“table” and name=“emperors”; 另外,也可以这样: sqlite> .schema emperors CREATE TABLE emperors( id integer primary key autoincrement, name text,dynasty text,start_year text); http://marshal.easymorse.com/index.html%3Fp=2981.html

Created 8086-07-08 · Updated 8086-07-08 · 1 min · 68 words · -