在postgresql中使用多维数据集 - 简单

时间:2015-07-04 23:55:24

标签: postgresql haskell cube

您打算如何将cubespostgresql-simple一起使用?

目前,我正在做像

这样的事情
query conn "SELECT thing FROM table WHERE coord <@ cube('?, ?') ORDER BY cube_distance(coord, cube('?')) ASC" 
      (In [a, b, c], In [d, e, f], In [g, h, i])

效果很好,但感觉就像误用了In。在executeMany的情况下它也失败了。例如

executeMany conn "INSERT INTO table(thing, coord) VALUES(?, cube('?'))" lst

其中lst :: [(String, In [Float])]syntax error in multi-row template而失败。等效但效率较低的

mapM_ (execute conn "INSERT INTO table(thing, coord) VALUES(?, cube('?'))") lst

工作正常,所以我假设这与executeMany组织插入参数的方式有关。

但是,文档没有提到Cube类型,我找不到它的使用示例,所以我不确定我所谓的要做。

1 个答案:

答案 0 :(得分:0)

您可以使用this mini-library我写的。一旦你包括它,你可以做

execute "INSERT INTO table(cube_field, name) VALUES(?, ?) RETURNING id" (Cube [[1, 2, 3]], "Testing")

,更重要的是,

executeMany "INSERT INTO table(cube_field, name) VALUES(?, ?) RETURNING id"
            [(Cube [[1, 2]], "One"), (Cube [[3, 4]], "Two"), (Cube [[5, 6]], "Three")]

没有fromField个实例,因此此时您无法选择Cube。我不会添加它,因为它看起来不平凡,我不需要它用于我的用例,但是patches are definitely welcome