跳到主要内容

SQL 写入数据

SQL 样例

这里有一些 INSERT 语句的基本样例。用户可以通过 TDengine CLI,TDengine Cloud 的数据浏览器或者通过 TDengine 连接器开发等执行这些语句。

一次写入一条

下面这条 INSERT 就将一条记录写入到表 d1001 中:

INSERT INTO d1001 VALUES (1538548685000, 10.3, 219, 0.31);

一次写入多条

TDengine 支持一次写入多条记录,比如下面这条命令就将两条记录写入到表 d1001 中:

INSERT INTO test.d1001 VALUES (1538548684000, 10.2, 220, 0.23) (1538548696650, 10.3, 218, 0.25);

一次写入多表

TDengine 也支持一次向多个表写入数据,比如下面这条命令就向 d1001 写入两条记录,向 d1002 写入一条记录:

INSERT INTO test.d1001 VALUES (1538548685000, 10.3, 219, 0.31) (1538548695000, 12.6, 218, 0.33) test.d1002 VALUES (1538548696800, 12.3, 221, 0.31);

详细的 SQL INSERT 语法规则参考 TDengine SQL 的数据写入

连接器样例

下面以智能电表为例,展示如何使用各语言连接器在名为 power 的数据库中,创建一个名为 meters 的超级表(STABLE),其表结构包含时间戳、电流、电压、相位等列,以及分组 ID 和位置作为标签。

IMPORTANT
  1. 在执行下面样例代码的之前,您必须先在 TDengine Cloud - 数据浏览器 页面创建一个名为 power 的数据库
  2. 如何在代码中建立和 TDengine Cloud 的连接,请参考 开发指南-建立连接

这个例子中,我们使用 execute 方法来执行 SQL 和得到插入的行数。参数 conn 是类taosrest.TaosRestConnection 的一个实例,请参考建立连接-Python.

# create super table
conn.execute("CREATE STABLE IF NOT EXISTS power.meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS (location BINARY(64), groupId INT)")
# insert multiple rows into multiple tables at once. subtables will be created automatically.
affected_row = conn.execute("""
INSERT INTO
power.d1001 USING power.meters TAGS('California.SanFrancisco',1) VALUES
('2018-10-03 14:38:10.000', 10.30000, 219, 0.31000)
('2018-10-03 14:38:20.000', 12.60000, 218, 0.33000)
('2018-10-03 14:38:30.800', 12.30000, 221, 0.31000)
power.d1002 USING power.meters TAGS('California.SanDiego',2) VALUES
('2018-10-03 14:38:16.650', 10.30000, 218, 0.25000)
""")
print("affected_row", affected_row) # 4

查看源码

IMPORTANT

由于 RESTful 接口无状态, 不能使用 USE db; 语句来切换数据库, 所以在上面示例中使用了dbName.tbName指定表名。