【发布时间】:2021-08-12 09:40:07
【问题描述】:
我正在尝试在 timescale db 中创建列以匹配我在 GoLANG 中的类型结构。下面是我的类型结构和我的表/超表的代码。有谁知道我做错了什么?
type Trade struct {
A int16 `json:"a"`
B int16 `json:"b"`
Ev string `json:"ev"`
P int16 `json:"p"`
Sym string `json:"sym"`
S int16 `json:"s"`
T int64 `json:"t"`
}
creatX := `CREATE EXTENSION IF NOT EXISTS timescaledb;`
creatT := `CREATE TABLE IF NOT EXISTS trade (id SERIAL PRIMARY KEY, a INT, b INT, ev TEXT, sym TEXT, s INT, t INT, p DECIMAL);`
//Table schema
tradeHypertable := `CREATE TABLE trade_data (
time TIMESTAMPTZ NOT NULL,
a INT NOT NULL,
b INT NOT NULL,
ev TEXT NOT NULL,
sym TEXT NOT NULL,
s INT NOT NULL,
t INT NOT NULL,
p DECIMAL NOT NULL
);
SELECT create_hypertable('trade_data', 'time',
a INT,
b INT,
ev TEXT,
sym TEXT,
s INT,
t INT,
p DECIMAL if_not_exists => TRUE);
`
我收到此错误无法将样本插入时间刻度错误:
syntax error at or near "INT" (SQLSTATE 42601)
exit status 1
这里可能有很多问题,请不吝赐教。
【问题讨论】:
-
我是 timesacledb 的新手。但我注意到您将结构中的
P字段表示为int16,但表有p DECIMAL。这是预期的吗? -
检查
create_hypertable的语法。您只提供表名,它的列是时间分区列。您无需为此函数提供列,因为它们是从原始表中发现的。 -
@advayrajhansa 我会纠正的。至于现在它只是一个 int。
-
@k_rus 我确实从关系表中选择了列,对吧?
-
您只需在创建表语句之后运行
SELECT create_hypertable('trade_data', 'time')。我是否正确理解您的 create hypertable 语句出现错误?
标签: go timescaledb