小编yau*_*nka的帖子

如何使用系列数据减少大型 SQLite 数据库的大小

我正在考虑将 SQLite 数据库用于处理大量数据系列的 C# 应用程序。数据目前位于多个 CSV 文件中,每个文件的大小最大为 20GB,格式如下:

2019.07.31 00:00:03.855,1.11568,1.11571,3,0

在迁移到 SQLite 时,我希望大大减小大小,但由于某种原因,我得到了一些不同的结果。

CSV 格式的示例字符串占用 44 个字节(43 个字符 + 新行)。据我了解的 SQLite 类型定义在 sqlite.org 中数据库中应该大致相同:23 字节日期时间文本 + 8*2 实数 + 1*2 整数 = 41 字节

dateTime 可以存储为 8 字节整数 (c# DateTime.Ticks),这应该将大小减少到每行约 26 个字节,几乎比 CSV 格式少两倍。

对于一个实验,我尝试导入 142,157 行数据。CSV 文件大小约为 6kk 字节,但生成的 DB 文件约为 5kk,几乎相同。压缩(在 DB Browser for SQLite 中可用)不会改变任何东西。

表架构是:

CREATE TABLE "Data" ( "dateTime" INTEGER, "value1" REAL, "value2" REAL, "value3" INTEGER, "value4" INTEGER )

示例行如下所示:

637001280038550000 1.11568 1.11571 3 …

sqlite

10
推荐指数
1
解决办法
2907
查看次数

如何在崩溃后清除 PostgreSQL 临时文件

我在进行聚类时遇到计算机崩溃。计算机恢复后临时文件尚未清除。现在如何安全地清除它们?

更新

Windows 操作系统。pgsql_tmp 目录为空,但磁盘空间仍然被位于表基文件夹中的集群临时文件占用。

postgresql

7
推荐指数
1
解决办法
1万
查看次数

按数组重叠分组

我有一个带有 id 和集群的 PostgreSQL 表,如下所示:

CREATE TABLE w (id bigint, clst int);
INSERT INTO w (id,clst)
VALUES 
  (1,0),
  (1,4),
  (2,1),
  (2,2),
  (2,3),
  (3,2),
  (4,2),
  (5,4),
  (6,5);
Run Code Online (Sandbox Code Playgroud)

如果聚合按 id 分组的集群,您可以看到集群数组中存在重叠值:

select id, array_agg(clst) clst from w group by id order by id;
 id |  clst
----+---------
  1 | {0,4}
  2 | {1,2,3}
  3 | {2}
  4 | {2}
  5 | {4}
  6 | {5}
Run Code Online (Sandbox Code Playgroud)

即集群4覆盖id 1和5,集群2覆盖id 2、3和4,而集群5只对应一个id。

我现在如何聚合按集群数组重叠分组的 id?即预期的结果是:

 id      | clst
---------+-------
 {1,5}   | {0,4,4}
 {2,3,4} | {1,2,3,2,2}
 {6}     | …
Run Code Online (Sandbox Code Playgroud)

postgresql

5
推荐指数
1
解决办法
584
查看次数

标签 统计

postgresql ×2

sqlite ×1