sqlite-命令行工具使用说明

sqlite 命令行工具使用说明

一、进入命令行
linux 使用 sqlite3 命令,windows 双击 sqlite3.exe 进入;

二、简单使用
#切换到db 目录
.cd /Users/my/db/    
#关闭已经进入的db,重新打开 test.db 库,如果 test.db 不存在则新建
.open test.db    #进入 test.db 库
#查看 test.db 所有表
.tables
#创建 tb2 表
CREATE TABLE tb1 (f1 varchar(30) primary key,f2 text,f3 real);
CREATE TABLE tb2 (f1 varchar(30) primary key,f2 text,f3 real);
#插入记录
insert into tb1 values('hello11',10,1);
insert into tb1 values('hello22',10,1);
insert into tb1 values('hello33',10,1);
insert into tb2 values('hello11',10,1);
insert into tb2 values('hello22',10,1);
insert into tb2 values('hello33',10,1);
#再次查看
.tables
---------------comand output---------------
sqlite> .tables
tb2
-------------------------------------------
#查看表数据
sqlite> select * from tb2;
---------------comand output---------------
hello!|10|1.0
hello2|10|1.0
hello3|10|1.0
-------------------------------------------
#保存当前 db 到一个新 db(相当于备份整个库),一下三个命令都可以
.save test_backup.db   #保存当前 test.db 所有信息到 test_backup.db
sqlite> .save test_save.db        #保存命令
sqlite> .backup test_backup.db    #备份命令
sqlite> .clone test_clone.db    #克隆命令
---------------comand output---------------
tb2... done
sqlite_autoindex_tb2_1... done
sqlite> 
-------------------------------------------
#显示建表脚本
---------------comand output---------------
sqlite> .schema        #查整库
CREATE TABLE tb2 (f1 varchar(30) primary key,f2 text,f3 real);
CREATE TABLE tb1 (f1 varchar(30) primary key,f2 text,f3 real);
---------------comand output---------------
sqlite> .schema tb2    #查指定表
CREATE TABLE tb2 (f1 varchar(30) primary key,f2 text,f3 real);
-------------------------------------------
#显示索引信息
sqlite> .indexes
sqlite_autoindex_tb1_1  sqlite_autoindex_tb2_1

#退出命令行
.quit

三、将数据库备份为 sql 脚本文件
使用 cd 命令,到你的 db 目录
命令格式:  
    sqlite3 库名 .dump | gizp -c >文件名

#将 test.db 库导出为 sql 脚本,并将文件使用 gzip 压缩到 test.db.gz 文件中
sqlite3 test.db .dump | gzip -c >test_dump200403.sql.gz    

#不解压查看 test_dump200403.sql.gz 内容(三个命令均可)
gunzip -c test.db.gz    #macbook 命令
zcat test.db.gz        #linux 命令
gzip -drc test_dump200403.sql.gz    #gzip 命令控制台中不解压查看
---------------comand output---------------
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE tb1 (f1 varchar(30) primary key,f2 text,f3 real);
INSERT INTO tb1 VALUES('hello11','10',1.0);
INSERT INTO tb1 VALUES('hello22','10',1.0);
INSERT INTO tb1 VALUES('hello33','10',1.0);
CREATE TABLE tb2 (f1 varchar(30) primary key,f2 text,f3 real);
INSERT INTO tb2 VALUES('hello11','10',1.0);
INSERT INTO tb2 VALUES('hello22','10',1.0);
INSERT INTO tb2 VALUES('hello33','10',1.0);
COMMIT;
-------------------------------------------

#解压查看 slq 脚本
gunzip -c test_dump200403.sql.gz > test_dump200403.sql #解压后将创建一个 test_dump200403.sql 文件,保留原文件
less test_dump200403.sql
---------------comand output---------------
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE tb1 (f1 varchar(30) primary key,f2 text,f3 real);
INSERT INTO tb1 VALUES('hello11','10',1.0);
INSERT INTO tb1 VALUES('hello22','10',1.0);
INSERT INTO tb1 VALUES('hello33','10',1.0);
CREATE TABLE tb2 (f1 varchar(30) primary key,f2 text,f3 real);
INSERT INTO tb2 VALUES('hello11','10',1.0);
INSERT INTO tb2 VALUES('hello22','10',1.0);
INSERT INTO tb2 VALUES('hello33','10',1.0);
COMMIT;
-------------------------------------------


四、将 dump 的文件直接还原为数据库
命令格式:
    zcat 压缩文件名 | sqlite3 新库名    #macbook 可能不好用
    gunzip 压缩文件名 | sqlite3 新库名    #兼容mac
#执行命令,创建 test_new.db 文件
gunzip -c test_dump200403.sql.gz | sqlite3 test_new.db

#验证 test_new.db 库
$ sqlite3    输入命令
---------------comand output---------------
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open test_new.db  #打开库
sqlite> .tables    #看看所有表
tb1  tb2
sqlite> select * from tb1;
hello11|10|1.0
hello22|10|1.0
hello33|10|1.0
sqlite> .quit
-------------------------------------------


五、sqlite3 命令列表:(其中 ?DB? 表示操作的为当前库,即使用 .open 打开的库;)
定义:
    ?DB? 表示操作的为当前库,即使用 .open 打开的库;
    ?TABLE?    表名可选;
命令:
.archive ...                 Manage SQL archives(管理SQL存档)
.auth ON|OFF                 Show authorizer callbacks(显示授权者回调)
.backup ?DB? FILE            Backup DB (default "main") to FILE(备份数据库(默认为“ main”)到FILE)
.bail on|off                 Stop after hitting an error.  Default OFF(遇到错误后停止。默认关闭)
.binary on|off               Turn binary output on or off.  Default OFF(打开或关闭二进制输出。默认关闭)
.cd DIRECTORY                Change the working directory to DIRECTORY(将工作目录更改为DIRECTORY)
.changes on|off              Show number of rows changed by SQL(显示由SQL更改的行数)
.check GLOB                  Fail if output since .testcase does not match(由于.testcase的输出不匹配,则检查GLOB失败)
.clone NEWDB                 Clone data into NEWDB from the existing database(将数据从现有数据库克隆到NEWDB)
.databases                   List names and files of attached databases(列出附加数据库的名称和文件)
.dbconfig ?op? ?val?         List or change sqlite3_db_config() options(列出或更改sqlite3_db_config()选项)
.dbinfo ?DB?                 Show status information about the database(显示有关数据库的状态信息)
.dump ?TABLE? ...            Render all database content as SQL(将所有数据库内容呈现为SQL)
.echo on|off                 Turn command echo on or off(打开或关闭命令回显)
.eqp on|off|full|...         Enable or disable automatic EXPLAIN QUERY PLAN(启用或禁用自动的EXPLAIN QUERY PLAN)
.excel                       Display the output of next command in a spreadsheet(在电子表格中显示下一个命令的输出)
.exit ?CODE?                 Exit this program with return-code CODE(使用返回码CODE退出此程序)
.expert                      EXPERIMENTAL. Suggest indexes for specified queries(实验。建议指定查询的索引)
.fullschema ?--indent?       Show schema and the content of sqlite_stat tables(显示模式和sqlite_stat表的内容)
.headers on|off              Turn display of headers on or off(打开或关闭标题显示)
.help ?-all? ?PATTERN?       Show help text for PATTERN(显示PATTERN的帮助文本)
.import FILE TABLE           Import data from FILE into TABLE(将数据从FILE导入TABLE)
.imposter INDEX TABLE        Create imposter table TABLE on index INDEX(在索引INDEX上创建imposter表TABLE)
.indexes ?TABLE?             Show names of indexes(显示索引名称)
.iotrace FILE                Enable I/O diagnostic logging to FILE(启用对FILE的I / O诊断日志记录)
.limit ?LIMIT? ?VAL?         Display or change the value of an SQLITE_LIMIT(显示或更改SQLITE_LIMIT的值)
.lint OPTIONS                Report potential schema issues.(报告潜在的架构问题。)
.load FILE ?ENTRY?           Load an extension library(加载扩展库)
.log FILE|off                Turn logging on or off.  FILE can be stderr/stdout(打开或关闭登录。 FILE可以是stderr / stdout)
.mode MODE ?TABLE?           Set output mode(设定输出模式)
.nullvalue STRING            Use STRING in place of NULL values(使用STRING代替NULL值)
.once (-e|-x|FILE)           Output for the next SQL command only to FILE(仅将下一个SQL命令的输出输出到FILE)
.open ?OPTIONS? ?FILE?       Close existing database and reopen FILE(关闭现有数据库并重新打开FILE)
.output ?FILE?               Send output to FILE or stdout if FILE is omitted(将输出发送到FILE或stdout(如果省略FILE))
.parameter CMD ...           Manage SQL parameter bindings(管理SQL参数绑定)
.print STRING...             Print literal STRING(打印文字STRING)
.progress N                  Invoke progress handler after every N opcodes(每N个操作码后调用进度处理程序)
.prompt MAIN CONTINUE        Replace the standard prompts(主要内容替换标准提示)
.quit                        Exit this program(退出该程序)
.read FILE                   Read input from FILE(读取输入)
.restore ?DB? FILE           Restore content of DB (default "main") from FILE(恢复DB的内容(默认为“ main”))
.save FILE                   Write in-memory database into FILE(将内存数据库写入FILE)
.scanstats on|off            Turn sqlite3_stmt_scanstatus() metrics on or off(打开或关闭sqlite3_stmt_scanstatus()指标)
.schema ?PATTERN?            Show the CREATE statements matching PATTERN(命令显示数据库或单个表(如果提供了可选的tablename参数)的完整建表脚本)
.selftest ?OPTIONS?          Run tests defined in the SELFTEST table(运行SELFTEST表中定义的测试)
.separator COL ?ROW?         Change the column and row separators(更改列和行分隔符)
.session ?NAME? CMD ...      Create or control sessions(创建或控制会话)
.sha3sum ...                 Compute a SHA3 hash of database content(计算数据库内容的SHA3哈希)
.shell CMD ARGS...           Run CMD ARGS... in a system shell(在系统Shell中运行CMD ARGS ...)
.show                        Show the current values for various settings(显示各种设置的当前值)
.stats ?on|off?              Show stats or turn stats on or off(显示统计信息或打开或关闭统计信息)
.system CMD ARGS...          Run CMD ARGS... in a system shell(在系统外壳中运行CMD ARGS ...)
.tables ?TABLE?              List names of tables matching LIKE pattern TABLE(列出与LIKE模式TABLE匹配的表的名称)
.testcase NAME               Begin redirecting output to 'testcase-out.txt'(名称开始将输出重定向到'testcase-out.txt')
.timeout MS                  Try opening locked tables for MS milliseconds(MS尝试打开锁定的表,以毫秒为单位)
.timer on|off                Turn SQL timer on or off(打开或关闭SQL计时器)
.trace ?OPTIONS?             Output each SQL statement as it is run(选项?在运行时输出每个SQL语句)
.vfsinfo ?AUX?               Information about the top-level VFS(有关顶级VFS的信息)
.vfslist                     List all available VFSes(列出所有可用的VFS)
.vfsname ?AUX?               Print the name of the VFS stack(打印VFS堆栈的名称)
.width NUM1 NUM2 ...         Set column widths for "column" mode(设置“列”模式的列宽)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值