【问题标题】:KDB: Preserve Leading Zeros When Saving Data to CSV?KDB:将数据保存到 CSV 时保留前导零?
【发布时间】:2018-08-13 15:31:56
【问题描述】:

我正在尝试将数据从 KDB 导出到 csv 文件。不幸的是,当我这样做时,前导零消失了。例如,0355 变为 355。

有什么技巧可以用来解决这个问题吗?

【问题讨论】:

  • 这是直接从 KDB 保存到 csv 文件。所以我宁愿不使用excel作为中介。我还应该补充一点,KDB 表中的列类型是符号而不是数字
  • 您是通过 excel 查看 csv 文件吗?
  • 正在 Excel 上查看
  • 你能在记事本中查看原始 csv 吗?零可能存在,但在 Excel 中查看时不存在,因为它将列格式化为数字。
  • 从记事本查看时出现零。问题是用户将从 Excel 中查看此内容,并且这些值将被复制并粘贴到他/她自己的专有数据库中

标签: excel csv formatting kdb


【解决方案1】:

我认为您的问题可能是在使用 excel 打开 CSV 的过程中。主要的 0 仍然存在,直到在 excel 中查看。

如果您想在 excel 中查看数据,一个选项是首先对数据进行字符串化,然后在 kdb 中添加一个普遍的 '。例如:

q)table: flip `a`b`c!(`001`002`003; 123; 10 12 12)
q)update a:("'",'string a) from table
a      b   c
-------------
"'001" 123 10
"'002" 123 12
"'003" 123 12

这实际上充当了“这是文本”的指示符,因此将保留 0。 ' 将在单元格中不可见,除非您编辑特定单元格,因此它对于显示这些符号很有用。除此之外,我认为您最好的选择是仅更改 excel 中的列类型设置。

【讨论】:

  • 现在这样做会强制“'”出现在单元格中的每个值之前。即'2018.
【解决方案2】:

如果您的 .csv 文件在记事本中打开时包含前导 0,则问题可能是 Excel 将值误解为数字,因为当 kdb+ 将符号导出到 csv 文件时,它没有将值括在引号中。

要绕过这个打开的 Excel,点击“数据”功能区,然后点击“从文本”,使用导入向导导入您的 csv。选择 csv 后,向导将打开,您可以将分隔符设置为逗号。

然后您将能够为每列选择数据类型,并将前导 0 的列设置为文本格式将使它们正确显示。

【讨论】:

    猜你喜欢
    • 2011-10-01
    • 2019-10-25
    • 2018-04-26
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    相关资源
    最近更新 更多