tableInsert

语法

tableInsert(table, args…)

参数

table 是表对象或表名。该表可为内存表或DFS表。在远程调用中,由于得不到远程表对象的引用,因此必须使用表名。

args… 可以是一个表、元组或字典,或多个向量或元组。

详情

将args…插入到table中,并返回插入的行数。

如果args…是一个表,它的结构必须与table的结构相同。若table是分区表,args…只能是一个表。

如果args…是一个元组,那么它的元素个数必须与table的列数相同,并且每个元素的数据类型必须与table中与之对应的每列的数据类型相同。

如果args…是多个向量或元组,那么向量与元组的个数必须与table中列数一致,且每个向量或元组的数据类型必须与table中与之对应的每列的数据类型相同。

如果args…是一个字典,那么它的keys对应table的列名,values对应table中每列的值,且values必须为元组。这种用法只适用于table为内存表的情况。

请注意:若数据库为 VALUE 分区,且分区列为字符串类型,则追加的分区列数据不能包含空格,“/n”, “/r”, “/t”。

例子

$ colName=["Name","Age"]
$ colType=["string","int"]
$ t1=table(100:0,colName, colType);

$ name=`Tom`Jerry`John
$ age=24 25 26
$ t2=table(name, age)

$ tableInsert(t1, t2);
3

$ t1;

Name

Age

Tom

24

Jerry

25

John

26

$ tableInsert(t1, (`George, 29));
1

$ t1;

Name

Age

Tom

24

Jerry

25

John

26

George

29

$ tableInsert(t1, (`Frank`Henry, 31 32));
2

$ tableInsert(t1, `Nicole`Nancy, 28 29);
2

$ t1.tableInsert(dict(`Name`Age, [`Patrick, 22]));
1

使用 tableInsert 函数向分布式表中插入批量数据:

$ db=database("dfs://db1",RANGE,0 20 50 101)
$ n=100000
$ id=rand(100,n)
$ val=rand(100.0,n)
$ t=table(id,val)
$ pt=db.createPartitionedTable(t,`pt,`id).append!(t);

$ tmp=table(rand(100,10000) as id,take(200.0,10000) as val);

$ tableInsert(pt,tmp);
10000