将csv文件转换为KDB+/q中的表

ddhy6vgd  于 2023-07-31  发布在  其他
关注(0)|答案(2)|浏览(92)

如何在kdb+/q中转换csv文件数据并存储到表中
我试着读文件就像

csvData: read0 `path/to/your/csvfile.csv
table: flip csvData 0: enlist ","

字符串
但是上面的第二行显示了类型错误

table: flip csvData 0: enlist ","


当csv中的列的模式/Meta未知时,是否有其他方法可以获取csv数据并存储在表中。

vs91vp4v

vs91vp4v1#

查看loading csv files using q的参考资料
一旦将数据保存到内存中,就可以通过多种方式将其持久化到磁盘,具体取决于您的用例。
例如,您可以保存表格:

如果你事先不知道列的数量,你可以阅读第一行(假设它是一个逗号分隔的标题)如下:

q)show header:`$"," vs first "\n" vs read1 `:sample.csv
`col1`col2`col3`col4`col5

q)show data:(count[header]#"*";enlist csv) 0: `:sample.csv
col1 col2 col3 col4 col5
------------------------
,"1" ,"2" ,"3" ,"4" ,"5"

字符串
一些注意事项/限制,在此使用此方法:
1.使用read1并只读取前N个字节可能更有效,直到第一个换行符捕获头部。对非常大的csv文件很有用。
1.上面示例中的数据都是作为字符串读入的,这可能不是最佳的,在查看数据后应考虑适当的类型。
您可以更进一步,将特定的列名Map到某些类型,并在加载期间/之后将这些类型应用于数据,然后将数据插入现有的表模式。
希望这个能帮上忙。

相关问题