当前位置:   article > 正文

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

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

执行

写好 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

执行

只要写好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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

执行

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

效果

在这里插入图片描述

4. 清空-订单表.bat

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

@echo off
CHCP 65001 > nul
echo  清空:订单表
sqlite3 MY_DB.db "DELETE FROM `订单表`;"
echo  清空:完成
pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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');
  • 1
  • 2
  • 3
  • 4

3. 查询订单表.sql

SELECT * FROM 订单表;
  • 1

4. 清空订单表.sql

DELETE FROM "订单表";
  • 1

5. 删除订单表.sql

DROP TABLE IF EXISTS "订单表";
  • 1

参考资料

sqlite 官方文档

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号