赞
踩
https://www.sqlite.org/download.html
我开发环境是 win11 所以下的这个:
将 sqlite3.exe
,MY_DB.db
, 所有bat
放在一起。
当然也可以直接把 sqlite3.exe
添加到环境变量。
@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
上即可执行
有时为了方便查在这里插入代码片
看数据,需要导出 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文件,拖上来执行即可
@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
上即可执行
对于需要反复执行的操作,比如:清空某个表,也可以直接写个批处理:双击使用即可
@echo off
CHCP 65001 > nul
echo 清空:订单表
sqlite3 MY_DB.db "DELETE FROM `订单表`;"
echo 清空:完成
pause
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
);
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');
SELECT * FROM 订单表;
DELETE FROM "订单表";
DROP TABLE IF EXISTS "订单表";
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。