将I作为F插入时发生kdb类型错误

将I作为F插入时发生kdb类型错误,kdb,Kdb,我有一个特定的文件类型,它包含一个带有浮点数的列,我使用insert读取该列 `table insert ("TISISIFIIIFFIbIFFFFFFIIIFIIFFFFIIIIIIIIIIIIFFFFFFIIFFIIIIFFIIIIIIIIIIIIIIIII"; enlist "\t" ) 0:`:my_file.txt 不幸的是,有时列中的值恰好都是整数,而在txt文件中保存为int,而不是float,因此是1而不是1.0,而且kdb似乎抛出了一个类型错误。有没有办法让kdb接受以该格式

我有一个特定的文件类型,它包含一个带有浮点数的列,我使用insert读取该列

`table insert ("TISISIFIIIFFIbIFFFFFFIIIFIIFFFFIIIIIIIIIIIIFFFFFFIIFFIIIIFFIIIIIIIIIIIIIIIII"; enlist "\t" ) 0:`:my_file.txt
不幸的是,有时列中的值恰好都是整数,而在txt文件中保存为int,而不是float,因此是1而不是1.0,而且kdb似乎抛出了一个类型错误。有没有办法让kdb接受以该格式保存为浮点数的整数


我确实有很多带有浮动的列,理论上,问题可能出现在任何一个列中。如果列类型为float,是否有方法告诉插入时的kdb将任何int视为float?

插入时实际发生了“type”错误。您试图插入一些已解析的数据,但每列的类型与“表”中每列的类型不一致。 您基本上是说您的原始数据可以包含浮点数,因此您必须将它们作为浮点数读入。 不过,解析后如何处理该列取决于您

1) 保留为浮点数,读入为浮点数,插入为浮点数,列应为“表”预读中的浮点数(我猜这就是您希望通过您的问题得出的结果):

2) 更新为整数,然后插入“表”-您将首先更新表的架构,以浮点形式读入,然后在每次读取后运行更新:

update "i"$COLUMN from `table
`table insert update "i"COLUMN from (1#"F";1#"\t") 0:`myfile.txt

您可能需要考虑的另一个选项,但请首先测试,因为它可能替换得太多,是从您的浮动中替换尾部“0”,然后以整数形式读取:

q)\cd /var/tmp
q)`:myfile.txt 0:("x\tx1";"1.0\t2.0";"3.0\t1.0")
q)\sed -i -e 's/.0//g' myfile.txt
q)("II";1#"\t")0:`myfile.txt

我真的想把它们作为漂浮物。问题似乎是,有些值在csv中保存为整数,圆形浮点将保存为整数,因此115.0将保存为115。如果有些值在csv中保存为整数,您可以将它们全部以浮点形式读取-只需将列保持为浮点,以浮点形式读取,然后以浮点形式插入(#1)您是否使用了
meta
函数来双重检查列数据类型?我无法重现该问题(在kdb+3.2上)
q)\cd /var/tmp
q)`:myfile.txt 0:("x\tx1";"1.0\t2.0";"3.0\t1.0")
q)\sed -i -e 's/.0//g' myfile.txt
q)("II";1#"\t")0:`myfile.txt