数据写入

  • 插入一条记录

    1. INSERT INTO tb_name VALUES (field_value, ...);

    向表tb_name中插入一条记录

  • 插入一条记录,数据对应到指定的列

    1. INSERT INTO tb_name (field1_name, ...) VALUES (field1_value1, ...);

    向表tb_name中插入一条记录,数据对应到指定的列。SQL语句中没有出现的列,数据库将自动填充为NULL。主键(时间戳)不能为NULL。

  • 插入多条记录

    1. INSERT INTO tb_name VALUES (field1_value1, ...) (field1_value2, ...) ...;

    向表tb_name中插入多条记录
    注意:在使用“插入多条记录”方式写入数据时,不能把第一列的时间戳取值都设为now,否则会导致语句中的多条记录使用相同的时间戳,于是就可能出现相互覆盖以致这些数据行无法全部被正确保存。

  • 按指定的列插入多条记录

    1. INSERT INTO tb_name (field1_name, ...) VALUES (field1_value1, ...) (field1_value2, ...) ...;

    向表tb_name中按指定的列插入多条记录

  • 向多个表插入多条记录

    1. INSERT INTO tb1_name VALUES (field1_value1, ...) (field1_value2, ...) ...
    2. tb2_name VALUES (field1_value1, ...) (field1_value2, ...) ...;

    同时向表tb1_name和tb2_name中分别插入多条记录

  • 同时向多个表按列插入多条记录

    1. INSERT INTO tb1_name (tb1_field1_name, ...) VALUES (field1_value1, ...) (field1_value2, ...) ...
    2. tb2_name (tb2_field1_name, ...) VALUES (field1_value1, ...) (field1_value2, ...) ...;

    同时向表tb1_name和tb2_name中按列分别插入多条记录

    注意:允许插入的最老记录的时间戳,是相对于当前服务器时间,减去配置的keep值(数据保留的天数),允许插入的最新记录的时间戳,是相对于当前服务器时间,加上配置的days值(数据文件存储数据的时间跨度,单位为天)。keep和days都是可以在创建数据库时指定的,缺省值分别是3650天和10天。

  • 插入记录时自动建表

    1. INSERT INTO tb_name USING stb_name TAGS (tag_value1, ...) VALUES (field_value1, ...);

    如果用户在写数据时并不确定某个表是否存在,此时可以在写入数据时使用自动建表语法来创建不存在的表,若该表已存在则不会建立新表。自动建表时,要求必须以超级表为模板,并写明数据表的 tags 取值。

  • 插入记录时自动建表,并指定具体的 tags 列

    1. INSERT INTO tb_name USING stb_name (tag_name1, ...) TAGS (tag_value1, ...) VALUES (field_value1, ...);

    在自动建表时,可以只是指定部分 tags 列的取值,未被指定的 tags 列将取为空值。

历史记录写入:可使用IMPORT或者INSERT命令,IMPORT的语法,功能与INSERT完全一样。

说明:针对 insert 类型的 SQL 语句,我们采用的流式解析策略,在发现后面的错误之前,前面正确的部分SQL仍会执行。下面的sql中,insert语句是无效的,但是d1001仍会被创建。

  1. taos> CREATE TABLE meters(ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS(location BINARY(30), groupId INT);
  2. Query OK, 0 row(s) affected (0.008245s)
  3. taos> SHOW STABLES;
  4. name | created_time | columns | tags | tables |
  5. ============================================================================================
  6. meters | 2020-08-06 17:50:27.831 | 4 | 2 | 0 |
  7. Query OK, 1 row(s) in set (0.001029s)
  8. taos> SHOW TABLES;
  9. Query OK, 0 row(s) in set (0.000946s)
  10. taos> INSERT INTO d1001 USING meters TAGS('Beijing.Chaoyang', 2);
  11. DB error: invalid SQL: keyword VALUES or FILE required
  12. taos> SHOW TABLES;
  13. table_name | created_time | columns | stable_name |
  14. ======================================================================================================
  15. d1001 | 2020-08-06 17:52:02.097 | 4 | meters |
  16. Query OK, 1 row(s) in set (0.001091s)