92 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| ---
 | |
| title: OpenTSDB Line Protocol
 | |
| sidebar_label: OpenTSDB Line Protocol
 | |
| description: This document describes how to insert data into TDengine using the OpenTSDB Line Protocol.
 | |
| ---
 | |
| 
 | |
| import Tabs from "@theme/Tabs";
 | |
| import TabItem from "@theme/TabItem";
 | |
| import JavaTelnet from "./_java_opts_telnet.mdx";
 | |
| import PyTelnet from "./_py_opts_telnet.mdx";
 | |
| import GoTelnet from "./_go_opts_telnet.mdx";
 | |
| import RustTelnet from "./_rust_opts_telnet.mdx";
 | |
| import NodeTelnet from "./_js_opts_telnet.mdx";
 | |
| import CsTelnet from "./_cs_opts_telnet.mdx";
 | |
| import CTelnet from "./_c_opts_telnet.mdx";
 | |
| 
 | |
| ## Introduction
 | |
| 
 | |
| A single line of text is used in OpenTSDB line protocol to represent one row of data. OpenTSDB employs a single column data model, so each line can only contain a single data column. There can be multiple tags. Each line contains 4 parts as below:
 | |
| 
 | |
| ```txt
 | |
| <metric> <timestamp> <value> <tagk_1>=<tagv_1>[ <tagk_n>=<tagv_n>]
 | |
| ```
 | |
| 
 | |
| - `metric` will be used as the STable name.
 | |
| - `timestamp` is the timestamp of current row of data. The time precision will be determined automatically based on the length of the timestamp. Second and millisecond time precision are supported.
 | |
| - `value` is a metric which must be a numeric value, The corresponding column name is "value".
 | |
| - The last part is the tag set separated by spaces, all tags will be converted to NCHAR type automatically.
 | |
| 
 | |
| For example:
 | |
| 
 | |
| ```txt
 | |
| meters.current 1648432611250 11.3 location=California.LosAngeles groupid=3
 | |
| ```
 | |
| 
 | |
| - The child table name is created automatically in a rule to guarantee its uniqueness. But you can configure `smlChildTableName` in taos.cfg to specify a tag value as the table names if the tag value is unique globally. For example, if a tag is called `tname` and you set `smlChildTableName=tname` in taos.cfg, when you insert `st,tname=cpu1,t1=4 c1=3 1626006833639000000`, the child table `cpu1` will be automatically created. Note that if multiple rows have the same tname but different tag_set values, the tag_set of the first row is used to create the table and the others are ignored.
 | |
|   Please refer to [OpenTSDB Telnet API](http://opentsdb.net/docs/build/html/api_telnet/put.html) for more details.
 | |
| 
 | |
| ## Examples
 | |
| 
 | |
| <Tabs defaultValue="java" groupId="lang">
 | |
|   <TabItem label="Java" value="java">
 | |
|     <JavaTelnet />
 | |
|   </TabItem>
 | |
|   <TabItem label="Python" value="Python">
 | |
|     <PyTelnet />
 | |
|   </TabItem>
 | |
|   <TabItem label="Go" value="go">
 | |
|     <GoTelnet />
 | |
|   </TabItem>
 | |
|   <TabItem label="Node.js" value="nodejs">
 | |
|     <NodeTelnet />
 | |
|   </TabItem>
 | |
|   <TabItem label="C#" value="csharp">
 | |
|     <CsTelnet />
 | |
|   </TabItem>
 | |
|   <TabItem label="C" value="c">
 | |
|     <CTelnet />
 | |
|   </TabItem>
 | |
| </Tabs>
 | |
| 
 | |
| 2 STables will be created automatically and each STable has 4 rows of data in the above sample code.
 | |
| 
 | |
| ```cmd
 | |
| taos> use test;
 | |
| Database changed.
 | |
| 
 | |
| taos> show stables;
 | |
|               name              |
 | |
| =================================
 | |
|  meters.current                 |
 | |
|  meters.voltage                 |
 | |
| Query OK, 2 row(s) in set (0.002544s)
 | |
| 
 | |
| taos> select tbname, * from `meters.current`;
 | |
|              tbname             |           _ts            |           _value           | groupid |            location            |
 | |
| ==================================================================================================================================
 | |
|  t_0e7bcfa21a02331c06764f275... | 2022-03-28 09:56:51.249 |              10.800000000 | 3       | California.LosAngeles                |
 | |
|  t_0e7bcfa21a02331c06764f275... | 2022-03-28 09:56:51.250 |              11.300000000 | 3       | California.LosAngeles                |
 | |
|  t_7e7b26dd860280242c6492a16... | 2022-03-28 09:56:51.249 |              10.300000000 | 2       | California.SanFrancisco               |
 | |
|  t_7e7b26dd860280242c6492a16... | 2022-03-28 09:56:51.250 |              12.600000000 | 2       | California.SanFrancisco               |
 | |
| Query OK, 4 row(s) in set (0.005399s)
 | |
| ```
 | |
| 
 | |
| ## Query Examples
 | |
| 
 | |
| If you want query the data of `location=California.LosAngeles groupid=3`, here is the query SQL:
 | |
| 
 | |
| ```sql
 | |
| SELECT * FROM `meters.current` WHERE location = "California.LosAngeles" AND groupid = 3;
 | |
| ```
 |