database - 将 csv 文件数据加载到表中
问题描述
创建的表如下:
source:([id:`symbol$()] ric:();source:();Date:`datetime$())
property:([id:`symbol$()] Value:())
然后我有两个.csv
文件,其中包括两个表数据。
property.csv
显示如下:
id,Value
TEST1,1
TEST2,2
source.csv
显示如下:
id,ric,source,Date
1,TRST,QO,2017-07-07 11:42:30.603
2,TRST2,QOT,2018-07-07 11:42:30.603
现在,如何csv
一次将文件数据加载到每个表中
解决方案
您可以使用 0: 加载分隔记录。https://code.kx.com/wiki/Reference/ZeroColon
该函数的最简单形式是(types; delimiter) 0: filehandle
类型应以其大写字母表示形式给出,每列一个或一个空格以忽略一列。例如,使用“SJ”source.csv
表示我想在 id 列中读取符号,将 value 列读取为 long。
分隔符指定如何分隔每列,在您的情况下为逗号分隔值 (CSV)。您可以将分隔符作为字符串传递","
,它将每一行视为数据的一部分并返回列的嵌套列表,您可以将其插入具有匹配架构的表中,也可以附加到标题上并手动翻转字典然后翻转得到一个像这样的表:flip `id`value!("IS";",") 0: `:test.txt
。
如果您将列标题作为 csv 中的第一行,您可以传递一个登记分隔符,该分隔符enlist ","
然后将使用列标题并在 kdb 中返回一个以这些作为标题的表,如果您认为合适,您可以重命名该表。
由于您要读取的文件具有不同的列类型并且要放入其中,因此您可以创建一个函数来读取它们,例如
{x insert (y;enlist ",") 0:z}'[(`source;`property);("SSSP";"SJ");(`:source.csv;`:property.csv)]
这将允许您指定应创建的表的名称、列类型和文件的文件句柄。
我建议使用时间戳而不是(折旧的)日期时间,因为它存储为 long 而不是浮点数,因此比较不会有问题。
推荐阅读
- reactjs - 样式化组件未在 Chrome 中显示
- r - guide_coloursteps 中的意外 NA
- python - 为什么 gen.flow_from_directory() 只接受一个包含 2 个文件夹的文件夹,每个文件夹都有一个类?
- python - AES在python中加密在php中解密
- c# - WPF 嵌套扩展器未正确调整父 ListBox 滚动条
- java - 如何使用最新的 Java LTS 11 运行老式 Java 程序?
- regex - 正则表达式:匹配除数字、空格、逗号、分号、'am' 和 'pm' 之外的任何内容
- javascript - Discord js检测其他机器人的消息
- types - 试图证明一个类型是 `euclidean_semiring` 的一个实例(在 Isabelle 中)
- monitoring - 具有历史数据的 Prometheus 导出器