sqlite3 命令行工具使用指南
一、啟動與退出
啟動數(shù)據(jù)庫連接
sqlite3 [database_file] # 打開/創(chuàng)建數(shù)據(jù)庫文件(如 test.db) sqlite3 # 啟動臨時內(nèi)存數(shù)據(jù)庫 (:memory:) sqlite3 :memory: # 顯式啟動內(nèi)存數(shù)據(jù)庫
- 文件不存在時自動創(chuàng)建
- 不指定文件名則使用臨時內(nèi)存數(shù)據(jù)庫(關(guān)閉后消失)
退出 CLI
.exit .quit Ctrl + D (Linux/macOS) Ctrl + C (Windows)
二、數(shù)據(jù)庫與文件操作
| 命令 | 說明 | 示例 |
|---|---|---|
.open [FILENAME] | 打開/切換數(shù)據(jù)庫 | .open backup.db |
.backup ?DB? FILE | 在線備份數(shù)據(jù)庫 | .backup main backup_2023.db |
.restore ?DB? FILE | 從文件恢復(fù)數(shù)據(jù)庫 | .restore main backup_2023.db |
.dump ?TABLE? | 導(dǎo)出數(shù)據(jù)庫為 SQL 腳本 | .dump > full.sql.dump users > users.sql |
.read FILENAME | 執(zhí)行 SQL 腳本文件 | .read import_data.sql |
.save FILE | 保存內(nèi)存數(shù)據(jù)庫到文件 | .save mem_backup.db |
三、元數(shù)據(jù)查詢
| 命令 | 說明 |
|---|---|
.databases | 顯示所有附加數(shù)據(jù)庫 |
.tables ?PATTERN? | 列出表(支持通配符) |
.schema ?TABLE? | 顯示表結(jié)構(gòu)(CREATE語句) |
.indexes ?TABLE? | 列出索引 |
.fullschema | 顯示完整 schema(包括隱藏信息) |
四、數(shù)據(jù)操作與導(dǎo)入導(dǎo)出
CSV 導(dǎo)入導(dǎo)出
-- 設(shè)置 CSV 模式 .mode csv .headers on -- 導(dǎo)出時包含列名 -- 導(dǎo)入 CSV .import users.csv users -- 文件 → 表 -- 導(dǎo)出 CSV .output users_export.csv SELECT * FROM users; .output stdout -- 恢復(fù)輸出到終端
其他格式
.mode list -- 自定義分隔符 (默認 '|') .mode insert -- 生成 INSERT 語句 .mode json -- JSON 格式輸出 .separator "," -- 設(shè)置分隔符(如 CSV) .nullvalue NULL -- 指定 NULL 的顯示值
五、查詢輸出格式化
| 命令 | 效果 | 示例輸出 |
|---|---|---|
.mode list | 豎線分隔 | 1|Alice|30 |
.mode csv | CSV 格式 | "1","Alice","30" |
.mode column | 表格對齊 | 1 Alice 30 |
.mode box | 表格+邊框 | ┌──┬───────┬──┐│1 │ Alice │30│ |
.mode json | JSON 數(shù)組 | [{"id":1,"name":"Alice","age":30}] |
.headers on/off | 顯示/隱藏列名 | |
.width NUM1 NUM2 | 設(shè)置列寬 | .width 5 10 4 |
.timer on/off | 顯示查詢耗時 | Run Time: real 0.002 user 0.000000 sys 0.000000 |
六、實用功能
| 命令 | 說明 |
|---|---|
.show | 顯示當前所有設(shè)置 |
.stats on/off | 開關(guān)性能統(tǒng)計 |
.timefmt FORMAT | 設(shè)置日期格式 |
.shell CMD | 執(zhí)行系統(tǒng)命令 |
.system CMD | 同上(別名) |
.prompt MAIN CONTINUE | 自定義提示符 |
七、高級操作
附加多個數(shù)據(jù)庫
ATTACH DATABASE 'aux.db' AS aux; SELECT * FROM main.users JOIN aux.orders ...; .databases -- 查看附加數(shù)據(jù)庫
執(zhí)行 PRAGMA 配置
PRAGMA journal_mode=WAL; -- 啟用 WAL 模式 PRAGMA synchronous=NORMAL; -- 平衡性能與安全 PRAGMA foreign_keys=ON; -- 啟用外鍵約束
事務(wù)控制
BEGIN TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id=1; UPDATE accounts SET balance = balance + 100 WHERE id=2; COMMIT; -- 或 ROLLBACK
八、快捷示例場景
場景 1:從 CSV 創(chuàng)建新表并導(dǎo)入
sqlite3 finance.db # 創(chuàng)建數(shù)據(jù)庫
-- 創(chuàng)建表
CREATE TABLE transactions (
id INTEGER PRIMARY KEY,
date TEXT,
amount REAL,
description TEXT
);
-- 導(dǎo)入 CSV
.mode csv
.import transactions.csv transactions
-- 驗證數(shù)據(jù)
SELECT count(*) FROM transactions;場景 2:備份與恢復(fù)
# 完整備份 sqlite3 production.db ".backup main backup_20231001.db" # 恢復(fù)數(shù)據(jù)庫 sqlite3 restored.db ".restore main backup_20231001.db"
九、注意事項
命令分類
- 點命令 (.):以
.開頭(如.tables),不需分號結(jié)尾 - SQL 語句:標準 SQL(
SELECT,CREATE等),必須用分號;結(jié)尾
- 點命令 (.):以
特殊字符轉(zhuǎn)義
在字符串中使用單引號時需轉(zhuǎn)義:INSERT INTO logs (message) VALUES ('It''s a test');資源限制
查看限制:PRAGMA compile_options;
常見限制:SQLITE_MAX_LENGTH=1,000,000,000(字符串/Blob最大長度)
掌握這些命令后,您可通過 sqlite3 CLI 高效完成日常數(shù)據(jù)庫管理任務(wù)!
到此這篇關(guān)于sqlite3 命令行工具使用指南的文章就介紹到這了,更多相關(guān)sqlite3 命令行工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQLite 入門教程二 SQLite的創(chuàng)建、修改、刪除表
今天這一篇只涉及到表的相關(guān)內(nèi)容,視圖、觸發(fā)器等到后面再講2013-12-12
sqlite3自動插入創(chuàng)建時間和更新時間的功能實現(xiàn)
最近在記錄一些簡單的結(jié)構(gòu)化日志信息時,用到了sqlite3數(shù)據(jù)庫(保存的信息比較簡單,用Mysql,SQL Server,Postgres這些數(shù)據(jù)庫有點小題大做),這次使用,希望sqlite3也能提供幾個基本的功能,自動插入創(chuàng)建時間和更新時間,需要的朋友可以參考下2024-06-06
基于sqlite特殊字符轉(zhuǎn)義的實現(xiàn)方法
本篇文章是對sqlite特殊字符轉(zhuǎn)義的實現(xiàn)方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05

