sqlite数据处理笔记

需求描述

程序中使用了sqlite本地数据库,按照日期命名.db文件,.db文件中只有一张数据表。现在需求是将多个.db 文件数据合并到一个db文件中

  1. 将表结构相同的db文件合并到一个db文件在这里插入代码片
    步骤
  • 打开sqliteExpert 使用attach database

sqlite数据处理笔记_第1张图片
首先打开A.db 文件,右键Attach database,选择要合并的文件
执行sql语句

  • 写SQL语句
    insert into B(字段b1,字段b2) select 字段a1,a2 from A—将A表中数据插入到B表

或者先查找到A表与B表的差异数据,将差异数据插入到B表中。
select 字段a1,a2 from A where a1 not in (select b1 from B)
再使用insert into 语句

insert into B1(字段b1,字段b2) select 字段a1,a2 from A1 where a1 not in (select b1 from B1) --已存在时不插入

需求描述

两个db文件表结构相同,a表字段数据,在b表中有,利用联合查询补全a表中的数据。

  1. 利用联合查询,导出需要数据
    left join —左关联查询会返回左边表中所有数据
    l利用A表a1字段查询获取a2字段数据
    select a.a1,a.a2 from A a left join B b on a.a1=b.b1

可以查看一些a2为空的数据
select *from ( select a.a1,a.a2 from A a left join B b on a.a1=b.b1) where a2 is null;
将需要的数据导出csv文件即可

sqlite数据处理笔记_第2张图片

  1. 表按照按单据分割成不同的db文件
    先使用sqliteExpert,分组查询,再导出。然后写脚本测试
    缺点是: 要手写循环单据,逐个导出
    例如导出单据TS20230821
sqlite3 -header -csv result.db " select *from res where bill='TS20230821'" > export/TS20230821.csv
  1. 将多个db文件合并成一个db文件
    先将多个db文件导出.csv格式,然后使用cat 命令将多个.csv文件合并为一个csv文件。再使用sqliteExpert,import 命令将csv文件导入数据库即可
    例如将所有.csv 文件合并到all.csv文件
 cat *.csv > ../all.csv
  1. 批量导出db文件

先批量导出.csv 文件,再sqliteExpert 中 import text file 导入即可

sqlite3 -header -csv result.db "attach database '2.db' as data;ALTER TABLE  data  ADD 'packageId' VARCHAR(20) DEFAULT '2';select  d.rowid, d.BTIME,d.Bill,r.Field_1,r.Field_2,d.uid,r.UII,d.packageid from data d left join res r on d.uid=r.UID  order by d.rowid asc;" > export/2.csv
  1. 需求描述,依据文件名将文件名作为字段添加到数据表中

现在sqliteExpert中测试sql 流程,再将SQL写入到脚本

sqlite3 -header -csv result.db "attach database '2.db' as data;ALTER TABLE  data  ADD 'packageId' VARCHAR(20) DEFAULT '2';select  d.rowid, d.BTIME,d.Bill,r.Field_1,r.Field_2,d.uid,r.UII,d.packageid from data d left join res r on d.uid=r.UID  order by d.rowid asc;" > export/2.csv

你可能感兴趣的:(sqlite,笔记)