如何在kdb+/q中转换csv文件数据并存储到表中我试着读文件就像
csvData: read0 `path/to/your/csvfile.csv table: flip csvData 0: enlist ","
字符串但是上面的第二行显示了类型错误
table: flip csvData 0: enlist ","
型当csv中的列的模式/Meta未知时,是否有其他方法可以获取csv数据并存储在表中。
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到某些类型,并在加载期间/之后将这些类型应用于数据,然后将数据插入现有的表模式。希望这个能帮上忙。
9lowa7mx2#
试试csvguess.q,它是专为你所要求的。https://github.com/KxSystems/kdb/blob/master/utils/csvguess.q
csvguess.q
2条答案
按热度按时间vs91vp4v1#
查看loading csv files using q的参考资料
一旦将数据保存到内存中,就可以通过多种方式将其持久化到磁盘,具体取决于您的用例。
例如,您可以保存表格:
如果你事先不知道列的数量,你可以阅读第一行(假设它是一个逗号分隔的标题)如下:
字符串
一些注意事项/限制,在此使用此方法:
1.使用read1并只读取前N个字节可能更有效,直到第一个换行符捕获头部。对非常大的csv文件很有用。
1.上面示例中的数据都是作为字符串读入的,这可能不是最佳的,在查看数据后应考虑适当的类型。
您可以更进一步,将特定的列名Map到某些类型,并在加载期间/之后将这些类型应用于数据,然后将数据插入现有的表模式。
希望这个能帮上忙。
9lowa7mx2#
试试
csvguess.q
,它是专为你所要求的。https://github.com/KxSystems/kdb/blob/master/utils/csvguess.q