为什么从 QPAD 复制的 csv 和从 q 进程保存的 csv 在大小上如此不同?

Ale*_*lex 0 kdb

我正在尝试保存从表生成的 csv。

如果我从 QPAD“全部导出为 CSV”,则文件大小为 22MB。

如果我这样做, `:path.csv 0: csv 0: table文件是 496MB。

该文件包含相同的数据。

我确实有一些列是日期列表、符号列表,这些列在解析为 csv 时会导致一些问题。

为了克服这个问题,我用这个{`$$[1=count x;string first x;`$" "sv string x]}

即其中一个列称为 allDates,如下所示:

其他一些 所有日期 堆叠符号列
值1 , 2001.01.01 ,`符号1
值2 2001.01.01 2001.01.02 `符号2`符号3

如此巨大的尺寸差异从何而来以及如何减小尺寸。

如果我删除这 3 列(列表列表),文件会显着下降。

做一个ungroup不是一个选择。

我认为这里重要的问题是为什么 QPAD 能够处理“D”“S”等类型的列表列表的列,以及如何在不将这些列转换为空格分隔字符串的情况下实现这一点。这就是导致我保存的 csv 如此巨大的原因。

IE。我可以从 QPAD 执行“全部导出到 csv”,大小为 21MB: 在此输入图像描述

但如果我想以编程方式保存它,我需要更改这些 allDates 和 DESK_NAME 列,并且它会增加到 500MB

更新:谢谢大家。我不知道 QPAD 会截断导出数据。这令人担忧。

Mat*_*ore 5

这些 csv 不会相同。qPad 截断嵌套列表(包括字符串)。直接从kdb导出的csv就完成了。

例如。

([]a:3#enlist til 1000;b:3#enlist til 1000)
Run Code Online (Sandbox Code Playgroud)

qPad csv 导出最后看起来像这样:30j, 31j ...