SQLite 命令行客户端 + Windows 批处理应用

下载 SQLite 客户端

https://www.sqlite.org/download.html
我开发环境是 win11 所以下的这个:
在这里插入图片描述

1. Bat 辅助脚本

sqlite3.exeMY_DB.db所有bat 放在一起。
当然也可以直接把 sqlite3.exe 添加到环境变量。

1. 执行SQL.bat

@echo off
CHCP 65001 > nul
REM 定义sqlite3 路径,数据库文件路径
SET "SQLITE3_EXE=sqlite3.exe"
SET "DB_FILE=MY_DB.db"
SET "TEMP_FILE_NAME=temp_filt_4_import_sql_rename.txt"
SET "TEMP_SQL_FILE=temp_sql_filt_4_import.txt"

echo ------------------------------------------
echo  开始执行 SQL 文件!
echo ------------------------------------------
REM 遍历所有参数(sql文件),逐个导入
:IMPORT_LOOP
IF "%~1"=="" GOTO :END_OF_FILES
echo  正在执行: %~1
echo BEGIN TRANSACTION; > %TEMP_SQL_FILE%
copy %~1 %TEMP_FILE_NAME% > nul
echo .read %TEMP_FILE_NAME% >> %TEMP_SQL_FILE%
echo COMMIT; >> %TEMP_SQL_FILE%
"%SQLITE3_EXE%" "%DB_FILE%" < %TEMP_SQL_FILE%
del %TEMP_FILE_NAME%
del %TEMP_SQL_FILE%
echo  执行完成: %~1
echo.
REM 移向下一项: SHIFT命令用于移动参数列表,使得%~1变为下一个文件,从而实现逐个处理。
SHIFT
GOTO :IMPORT_LOOP

:END_OF_FILES
echo ------------------------------------------
echo  所有 SQL 文件执行结束!
echo ------------------------------------------
PAUSE

执行

写好 sql 文件,拖放到此 bat 上即可执行
在这里插入图片描述

2. 导出Excel.bat

有时为了方便查在这里插入代码片看数据,需要导出 excel。

@echo off
CHCP 65001 > nul
REM 定义sqlite3 路径,数据库文件路径
SET "SQLITE3_EXE=sqlite3.exe"
SET "DB_FILE=MY_DB.db"
SET "TEMP_FILE_NAME=temp_filt_4_import_sql_rename.txt"
SET "TEMP_SQL_FILE=temp_sql_filt_4_import.txt"

echo ------------------------------------------
echo  导出表格到 excel 开始
echo ------------------------------------------
REM 遍历所有参数(sql文件),逐个导入
:IMPORT_LOOP
IF "%~1"=="" GOTO :END_OF_FILES
echo  正在导出 Excel: %~1

copy %~1 %TEMP_FILE_NAME% > nul
echo BEGIN TRANSACTION; > %TEMP_SQL_FILE%
echo .headers on >> %TEMP_SQL_FILE%
echo .excel >> %TEMP_SQL_FILE%
echo .read %TEMP_FILE_NAME% >> %TEMP_SQL_FILE%
echo COMMIT; >> %TEMP_SQL_FILE%
"%SQLITE3_EXE%" "%DB_FILE%" < %TEMP_SQL_FILE%
del %TEMP_FILE_NAME%
del %TEMP_SQL_FILE%

echo  完成导出 Excel: %~1
echo.
REM 移向下一项: SHIFT命令用于移动参数列表,使得%~1变为下一个文件,从而实现逐个处理。
SHIFT
GOTO :IMPORT_LOOP

:END_OF_FILES
echo ------------------------------------------
echo  导出表格到 excel 结束
echo ------------------------------------------
PAUSE

执行

只要写好SQL文件,拖上来执行即可
在这里插入图片描述

效果

在这里插入图片描述

3. 导出HTML.bat

@echo off
setlocal enabledelayedexpansion
CHCP 65001 > nul
REM 定义sqlite3 路径,数据库文件路径
SET "SQLITE3_EXE=sqlite3.exe"
SET "DB_FILE=MY_DB.db"
SET "TEMP_FILE_NAME=sql_file_rename.txt"
SET "TEMP_SQL_FILE=temp_sql_file_4_execution.txt"
set "OUTPUT_HTML_FILE=temp_table.html"

echo ------------------------------------------
echo  导出表格到 HTML 开始
echo ------------------------------------------
REM 遍历所有参数(sql文件),逐个导入
:IMPORT_LOOP
IF "%~1"=="" GOTO :END_OF_FILES
echo  开始导出: %~n1.html

REM 使用 sqlite3 导出表格到临时文件 temp_table.html
copy %~1 %TEMP_FILE_NAME% > nul
echo .mode html >> %TEMP_SQL_FILE%
echo .headers on >> %TEMP_SQL_FILE%
echo .output %OUTPUT_HTML_FILE% >> %TEMP_SQL_FILE%
echo .read %TEMP_FILE_NAME% >> %TEMP_SQL_FILE%
echo .output stdout >> %TEMP_SQL_FILE%
"%SQLITE3_EXE%" "%DB_FILE%" < %TEMP_SQL_FILE%
del %TEMP_FILE_NAME%
del %TEMP_SQL_FILE%

REM 读取 temp_table.html 拼接在一个变量 CONTENT 里
for /f "usebackq delims=" %%i in ("%OUTPUT_HTML_FILE%") do set "CONTENT=!CONTENT!%%i!"

REM 构建完整的 HTML 文档并输出
> %~n1.html (
		echo ^<^^!DOCTYPE html^>
		echo ^<html^>
		echo ^<head^>
		echo     ^<title^>%~n1^</title^>
		echo ^<head^>
		echo ^<body^>
		echo     ^<table^>
		echo 		!CONTENT!
		echo     ^</table^>
		echo ^</body^>
		echo ^</html^>
	)
REM 删除临时文件
del %OUTPUT_HTML_FILE%
echo  完成导出: %~n1.html
echo.
REM 移向下一项: SHIFT命令用于移动参数列表,使得%~1变为下一个文件,从而实现逐个处理。
SHIFT
GOTO :IMPORT_LOOP

:END_OF_FILES
echo ------------------------------------------
echo  导出表格到 HTML 结束
echo ------------------------------------------
endlocal

PAUSE

执行

写好 sql 文件,拖放到此 bat 上即可执行
在这里插入图片描述

效果

在这里插入图片描述

4. 清空-订单表.bat

对于需要反复执行的操作,比如:清空某个表,也可以直接写个批处理:双击使用即可

@echo off
CHCP 65001 > nul
echo  清空:订单表
sqlite3 MY_DB.db "DELETE FROM `订单表`;"
echo  清空:完成
pause

5. 订单表.bat

常用查询直接写个批处理,要用时双击即可。

@echo off
CHCP 65001 > nul
sqlite3.exe MY_DB.db ".mode column" ".headers on" ".width 10 10 10 10 10 20" "SELECT * FROM 订单表;"
pause

在这里插入图片描述

2. 测试 SQL

1. 创建订单表.sql

CREATE TABLE 订单表 (
    OrderID INTEGER PRIMARY KEY,
    CustomerName TEXT NOT NULL,
    ProductName TEXT NOT NULL,
    Quantity INTEGER NOT NULL,
    Price REAL NOT NULL,
    OrderTime TEXT NOT NULL
);

2. 插入订单表.sql

INSERT INTO 订单表 (CustomerName, ProductName, Quantity, Price, OrderTime) VALUES ('张三', '苹果手机', 1, 5999.00, '2023-04-01 10:30:00');
INSERT INTO 订单表 (CustomerName, ProductName, Quantity, Price, OrderTime) VALUES ('李四', '小米手环', 2, 299.00, '2023-04-02 14:15:00');
INSERT INTO 订单表 (CustomerName, ProductName, Quantity, Price, OrderTime) VALUES ('王五', '华为笔记本', 1, 7999.00, '2023-04-03 16:45:00');
INSERT INTO 订单表 (CustomerName, ProductName, Quantity, Price, OrderTime) VALUES ('赵六', '三星电视', 1, 4999.00, '2023-04-04 18:30:00');

3. 查询订单表.sql

SELECT * FROM 订单表;

4. 清空订单表.sql

DELETE FROM "订单表";

5. 删除订单表.sql

DROP TABLE IF EXISTS "订单表";

参考资料

sqlite 官方文档

相关推荐

  1. Docker客户命令

    2024-07-10 03:20:04       21 阅读
  2. 一种不需要客户ip的命令远程工具

    2024-07-10 03:20:04       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 03:20:04       2 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 03:20:04       3 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 03:20:04       2 阅读
  4. Python语言-面向对象

    2024-07-10 03:20:04       2 阅读

热门阅读

  1. 【必读】HTML中的BFC:10个你不知道的惊人事实

    2024-07-10 03:20:04       5 阅读
  2. C#——StringBuilder和string的区别与用法

    2024-07-10 03:20:04       7 阅读
  3. 《面向对象分析与设计》学习笔记1

    2024-07-10 03:20:04       9 阅读
  4. 人工智能与云计算

    2024-07-10 03:20:04       6 阅读
  5. 等保测评——云计算扩展项(云安全风险)

    2024-07-10 03:20:04       6 阅读
  6. iOS 开发者的 Flutter 入门课

    2024-07-10 03:20:04       8 阅读
  7. 认识同源策略

    2024-07-10 03:20:04       6 阅读
  8. LCD EMC 辐射 测试随想

    2024-07-10 03:20:04       8 阅读