You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效将文本文件数据追加到SQLite表(仅新增无重复数据)

高效追加数据到SQLite表的方案

你的DataAdapter方案是可行的,但并非最高效的选择。针对你的需求(仅插入不存在的Date/Value对),推荐两种更高效的方案:

方案一:利用INSERT OR IGNORE结合批量操作

因为你的Date列有唯一性约束,SQLite的INSERT OR IGNORE语句会自动跳过违反唯一约束的行(也就是已存在的日期),无需逐行检查。

命令行工具实现(适合快速处理)

  1. 打开SQLite命令行,连接到目标数据库:
    sqlite3 your_database.db
    
  2. 设置文本文件的字段分隔符为制表符:
    .mode tabs
    
  3. 导入数据到临时表,再通过INSERT OR IGNORE追加到目标表:
    .import your_data.txt temp_import
    INSERT OR IGNORE INTO myTable(Date, Value) SELECT Date, Value FROM temp_import;
    DROP TABLE temp_import;
    

编程实现(以C#为例)

如果用代码处理,可先将文本文件加载到内存,再通过参数化批量插入+事务提升效率:

using System.Data.SQLite;
using System.IO;

// 读取文本文件内容(跳过表头如果有)
var lines = File.ReadAllLines("your_data.txt").Skip(1);

using var conn = new SQLiteConnection("Data Source=your_database.db;");
conn.Open();
using var transaction = conn.BeginTransaction(); // 事务能大幅提升批量插入速度

var cmd = new SQLiteCommand("INSERT OR IGNORE INTO myTable(Date, Value) VALUES (@Date, @Value)", conn, transaction);
var dateParam = cmd.Parameters.Add("@Date", DbType.String);
var valueParam = cmd.Parameters.Add("@Value", DbType.Double); // 根据实际数据类型调整

foreach (var line in lines)
{
    var parts = line.Split('\t');
    dateParam.Value = parts[0];
    valueParam.Value = parts[1];
    cmd.ExecuteNonQuery();
}

transaction.Commit();

方案二:临时表+批量比对插入

如果文本文件数据量极大(比如百万级行),先导入临时表再批量比对插入的效率会更高:

  1. 创建与目标表结构匹配的临时表:
    CREATE TEMP TABLE temp_data(Date TEXT UNIQUE, Value REAL); -- 字段类型需和myTable保持一致
    
  2. 导入文本文件到临时表:
    .mode tabs
    .import your_data.txt temp_data
    
  3. 插入目标表中不存在的记录:
    INSERT INTO myTable(Date, Value)
    SELECT t.Date, t.Value
    FROM temp_data t
    WHERE NOT EXISTS (SELECT 1 FROM myTable m WHERE m.Date = t.Date);
    
  4. 清理临时表:
    DROP TABLE temp_data;
    

关于你提到的DataAdapter方案

这个方案确实可行,但默认情况下DataAdapter是逐行执行更新操作,即使开启批量更新,效率也不如直接利用SQLite内置的INSERT OR IGNORE或临时表比对。如果你的数据量不大,用DataAdapter也能满足需求,但数据量较大时,推荐上面两种方案。

内容的提问来源于stack exchange,提问作者GreenBear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:11:11