本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/)

通过INTO子句,可以将用户的查询结果插入到用户指定的measurement中。

语法

SELECT_clause
INTO <measurement_name>
FROM_clause [WHERE_clause] [GROUP_BY_clause]

INTO子句支持如下语法,使得用户可以使用不同方式来指定要插入数据的measurement:

子句 意义
INTO <measurement_name> 插入到指定measurement中。此时使用的是当前库、使用默认的retention policy
INTO <database_name>.<retention_policy_name>.<measurement_name> 往全路径的measurement中插入数据。此时指定了库、指定retention policy、指定measurement
INTO <database_name>..<measurement_name> 往指定库的指定measurement中插入数据,使用默认的retention policy
INTO <database_name>.<retention_policy_name>.:MEASUREMENT FROM /<regular_expression>/ 往指定库、指定retentioin policy,并且符合FROM子句中的正则规则的measurement中插入数据

INTO示例sql

  1. 示例一



    在InfluxDB中,是无法直接重命名一个库的,所以一个通常的做法是,像如上的sql那样,把一个库的所有数据全部复制到另一库中去。

    其中 GROUP BY * 子句使得在源库中是tag key的字段,复制到目标库中之后依然是tag key。下面的sql就不维护tag的series上下文环境,如此一来在源库中的tag key在被复制到目标库之后,就变成fields了:
SELECT *
INTO "copy_NOAA_water_database"."autogen".:MEASUREMENT
FROM "NOAA_water_database"."autogen"./.*/

当需要复制大量的数据时,官方推荐一个一个measurement的进行复制,并且最好通过WHERE子句来指定时间区间,这样可以避免系统出现内存溢出的错误。如下面的sql就展示了通过指定时间区间来分批的进行数据复制操作:

SELECT *
INTO <destination_database>.<retention_policy_name>.<measurement_name>
FROM <source_database>.<retention_policy_name>.<measurement_name>
WHERE time > now() - 100w and time < now() - 90w GROUP BY * SELECT *
INTO <destination_database>.<retention_policy_name>.<measurement_name>
FROM <source_database>.<retention_policy_name>.<measurement_name>}
WHERE time > now() - 90w and time < now() - 80w GROUP BY * SELECT *
INTO <destination_database>.<retention_policy_name>.<measurement_name>
FROM <source_database>.<retention_policy_name>.<measurement_name>
WHERE time > now() - 80w and time < now() - 70w GROUP BY *
  1. 示例二

    将一次查询结果写入到一个measurement中:



    上面sql将它的查询结果插入到一个新建的名为h2o_feet_copy_1的measurement中。执行sql的结果显示总共插入了7604条结果数据到h2o_feet_copy_1中,时间戳1970-01-01T00:00:00Z则没有什么意思,前面说过,在InfluxDB中,使用1970-01-01T00:00:00Z来表示timestamp的null。

  2. 示例三

    将查询结果插入到一个全路径的measurement中



    Note that both where_else and autogen must exist prior to running the INTO query.

  3. 示例四

    将聚合查询结果插入到measurement中(缩减取样)

SELECT MEAN("water_level") INTO "all_my_averages" FROM "h2o_feet"
WHERE "location" = 'coyote_creek'
AND time >= '2015-08-18T00:00:00Z'
AND time <= '2015-08-18T00:30:00Z'
GROUP BY time(12m)

  1. 示例五

    将多个表的汇总查询结果,复制到另一个库中

    Sql
SELECT MEAN(*)
INTO "where_else"."autogen".:MEASUREMENT
FROM /.*/
WHERE time >= '2015-08-18T00:00:00Z'
AND time <= '2015-08-18T00:06:00Z'
GROUP BY time(12m)

查询结果


INTO子句常见问题

问题1:丢失数据

如果在一个INTO查询中,再把数据复制到目标库时会把源库的tag key转换为fields,这可能会导致influxdb覆盖先前由tag key区分的点。注意,此行为不适用于使用top()或bottom()函数的查询。在常见问题文档中可查看到该问题的详细描述。

为了防止源库的tag key复制到目标库之后编程fields,可以在INTO查询sql中使用group by有意义的tag key,或者group by \*.

问题2:使用into子句自动化查询

本小节展示了如何通过into子句来实现手动插入复制数据的操作。可以在Continuous Queries的相关文档中查看到如何利用into子句实现实时的查询数据。

7.InfluxDB-InfluxQL基础语法教程--INTO子句的更多相关文章

  1. 5.InfluxDB-InfluxQL基础语法教程--WHERE子句

    本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) WHERE子句 语法 ...

  2. 2.InfluxDB-InfluxQL基础语法教程--目录

    本文翻译自官网,官方文档地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) InfluxQL ...

  3. 前端开发利器 Emmet 介绍与基础语法教程

    在前端开发的过程中,编写 HTML.CSS 代码始终占据了很大的工作比例.特别是手动编写 HTML 代码,效率特别低下,因为需要敲打各种“尖括号”.闭合标签等.而现在 Emmet 就是为了提高代码编写 ...

  4. 10.InfluxDB-InfluxQL基础语法教程--OFFSET 和SOFFSET子句

    本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) OFFSET 和SO ...

  5. 6.InfluxDB-InfluxQL基础语法教程--GROUP BY子句

    本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) GROUP BY子句 ...

  6. 9.InfluxDB-InfluxQL基础语法教程--LIMIT and SLIMIT 子句

    本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) LIMIT和SLIM ...

  7. 8.InfluxDB-InfluxQL基础语法教程--ORDER BY子句

    本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) 在InfluxDB中 ...

  8. 4.InfluxDB-InfluxQL基础语法教程--基本select语句

    本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) 基本语法如下: SE ...

  9. 3.InfluxDB-InfluxQL基础语法教程--数据说明

    下面是本次演示的示例数据 表名:h2o_feet 数据示例: 数据描述 : 表h2o_feet中所存储的是6分钟时间区间内的数据. 该表有一个tag,即location,该tag有两个值,分别为coy ...

随机推荐

  1. Mysql—用户表详解(mysql.user)

    MySQL是一个多用户管理的数据库,可以为不同用户分配不同的权限,分为root用户和普通用户,root用户为超级管理员,拥有所有权限,而普通用户拥有指定的权限. MySQL是通过权限表来控制用户对数据 ...

  2. AtCoder - 2286 (数论——唯一分解定理)

    题意 求n!的因子数%1e9+7. 思路 由唯一分解定理,一个数可以拆成素数幂之积,即2^a * 3^b *……,n!=2*3*……*n,所以计算每个素因子在这些数中出现的总次数(直接对2~n素因子分 ...

  3. linux学习(二)linux系统的安装

    Linux 安装 本章节我们将为大家介绍 Linux 的安装,安装步骤比较繁琐,现在其实云服务器挺普遍的,价格也便宜,如果直接不想搭建,也可以直接买一台学习用用,参考各大云服务器比较. 本章节以 ce ...

  4. mysql命令大全一

    mysql -u root -p;create database qa;show databases;use qa; create table results(id int not null auto ...

  5. 创建testng.xml文件

    简单介绍 运行TestNG测试脚本有两种方式:一种是直接通过IDE运行(例如使用eclipse中的“Run TestNG tests”),另一种是从命令行运行(通过使用xml配置文件).当我们想执行某 ...

  6. Python爬虫:

    python中selenium操作下拉滚动条方法汇总   UI自动化中经常会遇到元素识别不到,找不到的问题,原因有很多,比如不在iframe里,xpath或id写错了等等:但有一种是在当前显示的页面元 ...

  7. 详解C++ STL priority_queue 容器

    详解C++ STL priority_queue 容器 本篇随笔简单介绍一下\(C++STL\)中\(priority_queue\)容器的使用方法和常见的使用技巧. priority_queue容器 ...

  8. rss订阅

    其实,本质上和爬虫没区别,只不过这是人家主动给你数据,而且是编排好格式后的数据 按个人主页url更新内容 去重,按照redis去重的方式 按时间保存内容 mysql 保存为时间格式(可以根据时间比较大 ...

  9. zz错误集锦

    1.csp-s模拟测试63 T1 2e8的数组开bitset会ce,开bool就可以了,bool一位占一个字节,不是四个字节 2.csp-s模拟测试65 T2 把用vector存图改成前向星,就A了, ...

  10. 运维相关指标数据采集并ES入仓 - 运维笔记

    为了进行数字化IT治理,需要对一些应用进程相关指标进行采集并入库.收集到的应用指标数据最好要进行ES入仓,入到Kafka里面,并通过Kibana可视化展示. 需要进行采集的应用进程相关指标如下: ES ...