Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
328 views
in Technique[技术] by (71.8m points)

往分布式表写数据时报 contains external partitions.

我创建数据库和分布式表的代码如下:

db=database(dbName, VALUE, 1..10)
t = table(10000:0,`deviceID`send_time`temperature`humidity`voltage ,[INT, TIMESTAMP, DOUBLE, DOUBLE,DOUBLE])
db.createPartitionedTable(t, `pt, `deviceID)

写入分布表的代码如下:

msg="1,2020.08.27T15:57:36.985,45.551123,34.339214,0"
val=split(msg,",")
loadTable(dbName, `pt).tableInsert((int(val[0]), timestamp(val[1]), double(val[2]),double(val[3]),double(val[4])))

执行后报错:

Can't append data to a segmented table that contains external partitions.

但如下所示写入内存表是可以的:

t = table(10000:0,`deviceID`send_time`temperature`humidity`voltage ,[INT, TIMESTAMP, DOUBLE, DOUBLE,DOUBLE])
t.tableInsert((int(val[0]), timestamp(val[1]), double(val[2]),double(val[3]),double(val[4])))

请问是什么原因?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

使用append!tableInsert函数往分布式数据表中插入数据。即使只插入一条数据,也要用表的形式来表示新增的数据。上面代码可改为如下:

loadTable(dbName, `pt).tableInsert(table(int(val[0]) as col1, timestamp(val[1]) as col2, double(val[2]) as col3,double(val[3]) as col4,double(val[4]) as col5))

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...