数据持久化

数据持久化可以选择文件存储或数据库存储,单片机上可用flashdb/easy flash/csv文件存储,Linux上可以用sqlite +SQL语句/正则表达式查询。

 一 SQLite :

1. 环境搭建(极简):

  • 下载 DB Browser for SQLite
  • 或在 Linux/Windows 命令行安装 sqlite3
  • 或在 C/C++ 项目中直接链接 sqlite3.c

二  csv文件:用逗号隔开,可以用excel/access数据库直接打开并按excel进行展示,

image

 

#include "ff.h"  // FATFS 头文件

FATFS fs;
FIL fil;
FRESULT res;

// 初始化 SD 卡 + FATFS
void init_sd_card(void) {
    f_mount(&fs, "", 1);  // 挂载文件系统
}

// 写入 CSV 行
void log_sensor_data(float x, float y, float z, float temp) {
    static int first_line = 1;
    
    res = f_open(&fil, "sensor.csv", FA_WRITE | FA_OPEN_APPEND);
    if (res == FR_OK) {
        if (first_line) {
            f_puts("timestamp,x,y,z,temperature\n", &fil);
            first_line = 0;
        }
        char buf[100];
        // 假设你有获取时间的方法(如 RTC)
        uint32_t ts = get_timestamp();
        sprintf(buf, "%lu,%.2f,%.2f,%.2f,%.1f\n", ts, x, y, z, temp);
        f_puts(buf, &fil);
        f_close(&fil);
    }
}
单片机写csv文件

 在excel中进行SQL/正则表达式查询

通过「Microsoft Query」或「Power Query」(推荐)

适用场景:

  • 从外部数据源(如 Access、SQL Server、文本文件、甚至另一个 Excel 表)用 SQL 查询导入数据 

操作步骤(以 Windows + Excel 为例):

  1. 数据源格式要求:

    • Excel 文件本身可作为“数据库表”使用(每张工作表 ≈ 一张表,第一行是列名)
    • 或连接外部数据库(如 SQLite、MySQL 等)
  2. 使用 Power Query(Excel 2016+ 内置):

    • 菜单栏 → 数据 → 获取数据 → 从其他源 → 从 ODBC 或 从文件/Excel
    • 在 Power Query 编辑器中,可点击 “高级选项” 输入 SQL 语句(部分版本支持)
    • 或通过 M 语言(Power Query 自有语言)实现类似 SQL 的逻辑
  3. 使用 Microsoft Query(传统方式):

    • 文件 → 选项 → 加载项 → 勾选 Microsoft Query
    • 数据 → 获取外部数据 → 从 Microsoft Query
    • 选择数据源(如 Excel 文件本身),然后可写 SQL:“SELECT * FROM [Sheet1$] WHERE [Age] > 18”
posted on 2025-11-27 14:12  杰瑞鼠  阅读(4)  评论(0)    收藏  举报