diff --git a/docs-cn/06-insert-data/01-sql-writing.mdx b/docs-cn/06-insert-data/01-sql-writing.mdx index c49ddc025e7def643b7a25320912d4a42f1d61e2..bd41f2f4552759cdde9a34207bee50feeda197c1 100644 --- a/docs-cn/06-insert-data/01-sql-writing.mdx +++ b/docs-cn/06-insert-data/01-sql-writing.mdx @@ -118,6 +118,6 @@ TDengine 也提供了支持参数绑定的 Prepare API,与 MySQL 一样,这 :::note -只有使用本地驱动方式连接连接,才能使用动态绑定功能。 +只有使用本地驱动方式建立连接,才能使用动态绑定功能。 ::: diff --git a/docs-cn/06-insert-data/_java_line.mdx b/docs-cn/06-insert-data/_java_line.mdx index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2e59a5d4701b2a2ab04ec5711845dc5c80067a1e 100644 --- a/docs-cn/06-insert-data/_java_line.mdx +++ b/docs-cn/06-insert-data/_java_line.mdx @@ -0,0 +1,3 @@ +```java +{{#include docs-examples/java/src/main/java/com/taos/example/LineProtocolExample.java}} +``` diff --git a/docs-cn/06-insert-data/_java_opts_json.mdx b/docs-cn/06-insert-data/_java_opts_json.mdx index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..826a1a07d9405cb193849f9d21e5444f68517914 100644 --- a/docs-cn/06-insert-data/_java_opts_json.mdx +++ b/docs-cn/06-insert-data/_java_opts_json.mdx @@ -0,0 +1,3 @@ +```java +{{#include docs-examples/java/src/main/java/com/taos/example/JSONProtocolExample.java}} +``` diff --git a/docs-cn/06-insert-data/_java_opts_telnet.mdx b/docs-cn/06-insert-data/_java_opts_telnet.mdx index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..954dcc1a482a150dea0b190e1e0593adbfbde796 100644 --- a/docs-cn/06-insert-data/_java_opts_telnet.mdx +++ b/docs-cn/06-insert-data/_java_opts_telnet.mdx @@ -0,0 +1,3 @@ +```java +{{#include docs-examples/java/src/main/java/com/taos/example/TelnetLineProtocolExample.java}} +``` diff --git a/docs-cn/06-insert-data/_py_line.mdx b/docs-cn/06-insert-data/_py_line.mdx index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d3bb1ebb3403b53fa43bfc9d5d1a0de9764d7583 100644 --- a/docs-cn/06-insert-data/_py_line.mdx +++ b/docs-cn/06-insert-data/_py_line.mdx @@ -0,0 +1,3 @@ +```py +{{#include docs-examples/python/line_protocol_example.py}} +``` diff --git a/docs-cn/06-insert-data/_py_opts_json.mdx b/docs-cn/06-insert-data/_py_opts_json.mdx index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cfbfe13ccfdb4f3f34b77300812863fdf70d0f59 100644 --- a/docs-cn/06-insert-data/_py_opts_json.mdx +++ b/docs-cn/06-insert-data/_py_opts_json.mdx @@ -0,0 +1,3 @@ +```py +{{#include docs-examples/python/json_protocol_example.py}} +``` diff --git a/docs-cn/06-insert-data/_py_opts_telnet.mdx b/docs-cn/06-insert-data/_py_opts_telnet.mdx index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..14bc65a7a3da815abadf7f25c8deffeac666c8d7 100644 --- a/docs-cn/06-insert-data/_py_opts_telnet.mdx +++ b/docs-cn/06-insert-data/_py_opts_telnet.mdx @@ -0,0 +1,3 @@ +```py +{{#include docs-examples/python/telnet_line_protocol_example.py}} +``` diff --git a/docs-cn/06-insert-data/_py_sql.mdx b/docs-cn/06-insert-data/_py_sql.mdx index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c0e15b8ec115b9244d50a47c9eafec04bcfdd70c 100644 --- a/docs-cn/06-insert-data/_py_sql.mdx +++ b/docs-cn/06-insert-data/_py_sql.mdx @@ -0,0 +1,3 @@ +```py +{{#include docs-examples/python/native_insert_example.py}} +``` diff --git a/docs-cn/06-insert-data/_py_stmt.mdx b/docs-cn/06-insert-data/_py_stmt.mdx index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b6ef86b5039f089eaec6569ba36855a12fd0d252 100644 --- a/docs-cn/06-insert-data/_py_stmt.mdx +++ b/docs-cn/06-insert-data/_py_stmt.mdx @@ -0,0 +1,3 @@ +```py +{{#include docs-examples/python/bind_param_example.py}} +``` \ No newline at end of file diff --git a/docs-cn/07-query-data/_py.mdx b/docs-cn/07-query-data/_py.mdx index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..41aaa890c393eee486c4aaa091eec6cfd93bbc66 100644 --- a/docs-cn/07-query-data/_py.mdx +++ b/docs-cn/07-query-data/_py.mdx @@ -0,0 +1,3 @@ +```py +{{#include docs-examples/python/query_example.py}} +``` diff --git a/docs-cn/07-query-data/_py_async.mdx b/docs-cn/07-query-data/_py_async.mdx index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4a11644f98112ef8169e5b1ca02268699f37d088 100644 --- a/docs-cn/07-query-data/_py_async.mdx +++ b/docs-cn/07-query-data/_py_async.mdx @@ -0,0 +1,3 @@ +```py +{{#include docs-examples/python/async_query_example.py}} +``` diff --git a/docs-cn/14-reference/03-connector/cshapr.mdx b/docs-cn/14-reference/03-connector/csharp.mdx similarity index 89% rename from docs-cn/14-reference/03-connector/cshapr.mdx rename to docs-cn/14-reference/03-connector/csharp.mdx index 9ce6d024dce8dcf1d9010f158d20effd4c054739..d5fd1fddf37f2ab2a1acf4e547169b0432d2feb3 100644 --- a/docs-cn/14-reference/03-connector/cshapr.mdx +++ b/docs-cn/14-reference/03-connector/csharp.mdx @@ -7,15 +7,15 @@ sidebar_label: C# - C# 连接器支持的系统有:Linux 64/Windows x64/Windows x86 -- C# 连接器现在也支持从[Nuget 下载引用](https://www.nuget.org/packages/TDengine.Connector/) +- C# 连接器现在也支持从 [Nuget 下载引用](https://www.nuget.org/packages/TDengine.Connector/) - 在 Windows 系统上,C# 应用程序可以使用 TDengine 的原生 C 接口来执行所有数据库操作,后续版本将提供 ORM(Dapper)框架驱动。 ## 安装准备 -- 应用驱动安装请参考[安装连接器驱动步骤](https://www.taosdata.com/cn/documentation/connector#driver)。 -- 接口文件 TDengineDrivercs.cs 和参考程序示例 TDengineTest.cs 均位于 Windows 客户端 install_directory/examples/C#目录下。 -- 安装[.NET SDK](https://dotnet.microsoft.com/download) +- 应用驱动安装请参考[安装连接器驱动步骤](/reference/connector/#安装客户端驱动)。 +- 接口文件 TDengineDrivercs.cs 和参考程序示例 TDengineTest.cs 均位于 Windows 客户端 install_directory/examples/C# 目录下。 +- 安装 [.NET SDK](https://dotnet.microsoft.com/download) ## 示例程序 diff --git a/docs-cn/14-reference/03-connector/java.mdx b/docs-cn/14-reference/03-connector/java.mdx index 95c04171e1141f587f9fcb5d790548ef412af7c6..81718009c404d3190057cb51f79ab94de86ba986 100644 --- a/docs-cn/14-reference/03-connector/java.mdx +++ b/docs-cn/14-reference/03-connector/java.mdx @@ -357,7 +357,7 @@ JDBC 连接器可能报错的错误码包括 3 种:JDBC driver 本身的报错 - https://github.com/taosdata/TDengine/blob/develop/src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBErrorNumbers.java - https://github.com/taosdata/TDengine/blob/develop/src/inc/taoserror.h -### 通过参数绑定写入数据 +### 通过参数绑定写入数据 从 2.1.2.0 版本开始,TDengine 的 JDBC-JNI 实现大幅改进了参数绑定方式对数据写入(INSERT)场景的支持。采用这种方式写入数据时,能避免 SQL 语法解析的资源消耗,从而在很多情况下显著提升写入性能。 注意: @@ -626,7 +626,47 @@ public void setString(int columnIndex, ArrayList list, int size) throws public void setNString(int columnIndex, ArrayList list, int size) throws SQLException ``` -### 设置客户端参数 +### 无模式写入 + +从 2.2.0.0 版本开始,TDengine 增加了对无模式写入功能。无模式写入兼容 InfluxDB 的 行协议(Line Protocol)、OpenTSDB 的 telnet 行协议和 OpenTSDB 的 JSON 格式协议。详情请参见[无模式写入](https://www.taosdata.com/docs/cn/v2.0/insert#schemaless)。 + +注意: + +- JDBC-RESTful 实现并不提供无模式写入这种使用方式 +- 以下示例代码基于 taos-jdbcdriver-2.0.36 + +示例代码: + +```java +public class SchemalessInsertTest { + private static final String host = "127.0.0.1"; + private static final String lineDemo = "st,t1=3i64,t2=4f64,t3=\"t3\" c1=3i64,c3=L\"passit\",c2=false,c4=4f64 1626006833639000000"; + private static final String telnetDemo = "stb0_0 1626006833 4 host=host0 interface=eth0"; + private static final String jsonDemo = "{\"metric\": \"meter_current\",\"timestamp\": 1346846400,\"value\": 10.3, \"tags\": {\"groupid\": 2, \"location\": \"Beijing\", \"id\": \"d1001\"}}"; + + public static void main(String[] args) throws SQLException { + final String url = "jdbc:TAOS://" + host + ":6030/?user=root&password=taosdata"; + try (Connection connection = DriverManager.getConnection(url)) { + init(connection); + + SchemalessWriter writer = new SchemalessWriter(connection); + writer.write(lineDemo, SchemalessProtocolType.LINE, SchemalessTimestampType.NANO_SECONDS); + writer.write(telnetDemo, SchemalessProtocolType.TELNET, SchemalessTimestampType.MILLI_SECONDS); + writer.write(jsonDemo, SchemalessProtocolType.JSON, SchemalessTimestampType.NOT_CONFIGURED); + } + } + + private static void init(Connection connection) throws SQLException { + try (Statement stmt = connection.createStatement()) { + stmt.executeUpdate("drop database if exists test_schemaless"); + stmt.executeUpdate("create database if not exists test_schemaless"); + stmt.executeUpdate("use test_schemaless"); + } + } +} +``` + +### 设置客户端参数 从 TDengine-2.3.5.0 版本开始,jdbc driver 支持在应用的第一次连接中,设置 TDengine 的客户端参数。Driver 支持 JDBC-JNI 方式中,通过 jdbcUrl 和 properties 两种方式设置 client parameter。 注意: @@ -687,7 +727,7 @@ public class ClientParameterSetting { } ``` -## 订阅 +## 订阅 ### 创建 diff --git a/docs-cn/14-reference/03-connector/node.mdx b/docs-cn/14-reference/03-connector/node.mdx index 0a34aacbcff9c499ee28665ef12337e42408a87b..99ff30fef43a5f5e8cbd2180123fc69288a10f6d 100644 --- a/docs-cn/14-reference/03-connector/node.mdx +++ b/docs-cn/14-reference/03-connector/node.mdx @@ -15,7 +15,7 @@ Node.js 连接器的使用参见[视频教程](https://www.taosdata.com/blog/202 ### 安装准备 -- 应用驱动安装请参考[安装连接器驱动步骤](https://www.taosdata.com/cn/documentation/connector#driver)。 +- 应用驱动安装请参考[安装连接器驱动步骤](/reference/connector/#安装客户端驱动)。 ### 安装 Node.js 连接器 diff --git a/docs-cn/14-reference/03-connector/python.mdx b/docs-cn/14-reference/03-connector/python.mdx index dd260e499d466537d60dac7b09938443a66a33f7..9baf9e0edf6f57a24a728ba88ac2a18e187aef46 100644 --- a/docs-cn/14-reference/03-connector/python.mdx +++ b/docs-cn/14-reference/03-connector/python.mdx @@ -15,7 +15,7 @@ Python 连接器支持的系统有:Linux 64/Windows x64 安装前准备: -- 已安装好 TDengine 应用驱动,请参考[安装连接器驱动步骤](https://www.taosdata.com/cn/documentation/connector#driver) +- 已安装好 TDengine 应用驱动,请参考[安装连接器驱动步骤](/reference/connector/#安装客户端驱动) - 已安装 python 2.7 or >= 3.4 - 已安装 pip @@ -281,75 +281,3 @@ k1 = conn.query("select info->'k1' as k1 from s1").fetch_all_into_dict() - _connect_ 方法 用于生成 taos.TaosConnection 的实例。 - -## RESTful Connector - -为支持各种不同类型平台的开发,TDengine 提供符合 REST 设计标准的 API,即 RESTful API。为最大程度降低学习成本,不同于其他数据库 RESTful API 的设计方法,TDengine 直接通过 HTTP POST 请求 BODY 中包含的 SQL 语句来操作数据库,仅需要一个 URL。RESTful 连接器的使用参见[视频教程](https://www.taosdata.com/blog/2020/11/11/1965.html)。 - -注意:与原生连接器的一个区别是,RESTful 接口是无状态的,因此 `USE db_name` 指令没有效果,所有对表名、超级表名的引用都需要指定数据库名前缀。(从 2.2.0.0 版本开始,支持在 RESTful url 中指定 db_name,这时如果 SQL 语句中没有指定数据库名前缀的话,会使用 url 中指定的这个 db_name。从 2.4.0.0 版本开始,RESTful 默认有 taosAdapter 提供,要求必须在 url 中指定 db_name。) - -### 安装 - -RESTful 接口不依赖于任何 TDengine 的库,因此客户端不需要安装任何 TDengine 的库,只要客户端的开发语言支持 HTTP 协议即可。 - -### 验证 - -在已经安装 TDengine 服务器端的情况下,可以按照如下方式进行验证。 - -下面以 Ubuntu 环境中使用 curl 工具(确认已经安装)来验证 RESTful 接口的正常。 - -下面示例是列出所有的数据库,请把 h1.taosdata.com 和 6041(缺省值)替换为实际运行的 TDengine 服务 fqdn 和端口号: - -```html -curl -H 'Authorization: Basic cm9vdDp0YW9zZGF0YQ==' -d 'show databases;' -h1.taosdata.com:6041/rest/sql -``` - -返回值结果如下表示验证通过: - -```json -{ - "status": "succ", - "head": [ - "name", - "created_time", - "ntables", - "vgroups", - "replica", - "quorum", - "days", - "keep1,keep2,keep(D)", - "cache(MB)", - "blocks", - "minrows", - "maxrows", - "wallevel", - "fsync", - "comp", - "precision", - "status" - ], - "data": [ - [ - "log", - "2020-09-02 17:23:00.039", - 4, - 1, - 1, - 1, - 10, - "30,30,30", - 1, - 3, - 100, - 4096, - 1, - 3000, - 2, - "us", - "ready" - ] - ], - "rows": 1 -} -``` diff --git a/docs-cn/17-train-fqa/04-direcotry.md b/docs-cn/14-reference/12-direcotry.md similarity index 100% rename from docs-cn/17-train-fqa/04-direcotry.md rename to docs-cn/14-reference/12-direcotry.md diff --git a/docs-cn/14-reference/13-schemaless/13-schemaless.md b/docs-cn/14-reference/13-schemaless/13-schemaless.md index 9e74d5ac4d040fbb84650e2e65350b36716dee5e..1c5fbea726eb5153d4db0ef6d42ef53b478232f5 100644 --- a/docs-cn/14-reference/13-schemaless/13-schemaless.md +++ b/docs-cn/14-reference/13-schemaless/13-schemaless.md @@ -6,7 +6,6 @@ 从 2.2.0.0 版本开始,提供调用 Schemaless 写入方式,可以免于预先创建超级表/子表的步骤,随着数据写入接口能够自动创建与数据对应的存储结构。并且在必要时,Schemaless 将自动增加必要的数据列,保证用户写入的数据可以被正确存储。 - 无模式写入方式建立的超级表及其对应的子表与通过 SQL 直接建立的超级表和子表完全没有区别,你也可以通过,SQL 语句直接向其中写入数据。需要注意的是,通过无模式写入方式建立的表,其表名是基于标签值按照固定的映射规则生成,所以无法明确地进行表意,缺乏可读性。 ## 无模式写入行协议 @@ -80,9 +79,10 @@ st,t1=3,t2=4,t3=t3 c1=3i64,c3="passit",c2=false,c4=4f64 1626006833639000000 7. 如果指定的数据子表已经存在,而且本次指定的标签列取值跟已保存的值不一样,那么最新的数据行中的值会覆盖旧的标签列取值。 8. 整个处理过程中遇到的错误会中断写入过程,并返回错误代码。 -:::Tip +:::tip 无模式所有的处理逻辑,仍会遵循 TDengine 对数据结构的底层限制,例如每行数据的总长度不能超过 16k 字节。这方面的具体限制约束请参见 [TAOS SQL 边界限制](https://www.taosdata.com/cn/documentation/taos-sql#limitation) + ::: ## 时间分辨率识别 @@ -161,4 +161,4 @@ TDengine 提供数据写入的幂等性保证,即您可以反复调用 API 进 如果是无模式写入过程中的数据本身错误,应用会得到 TSDB_CODE_TSC_LINE_SYNTAX_ERROR 错误信息,该错误信息表明错误发生在写入文本中。其他的错误码与原系统一致,可以通过 -taos_errstr 获取具体的错误原因。 \ No newline at end of file +taos_errstr 获取具体的错误原因。 diff --git a/docs-examples/c/.gitignore b/docs-examples/c/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..afe974314989a1e3aa4eee703738a9a960c18577 --- /dev/null +++ b/docs-examples/c/.gitignore @@ -0,0 +1,3 @@ +* +!*.c +!.gitignore diff --git a/docs-examples/c/json_protocol_example.c b/docs-examples/c/json_protocol_example.c new file mode 100644 index 0000000000000000000000000000000000000000..b528770f14b24eb768cb2393d651a1f8bfa1dc79 --- /dev/null +++ b/docs-examples/c/json_protocol_example.c @@ -0,0 +1,67 @@ +// compile with +// gcc connect_example.c -o connect_example -I /usr/local/taos/include -L /usr/local/taos/driver -ltaos +#include +#include "taos.h" +#include "taoserror.h" + +int main() { + // if don't want to connect to a default db, set it to NULL. + const char *db = "test"; + TAOS *taos = taos_connect("localhost", "root", "taosdata", db, 6030); + printf("Connected\n"); + char *message[] = { +"[ \ + { \ + \"metric\":\"cpu_load_1\", \ + \"timestamp\": 1626006833, \ + \"value\": 55.5, \ + \"tags\": \ + { \ + \"host\": \"ubuntu\", \ + \"interface\": \"eth1\", \ + \"Id\": \"tb1\" \ + } \ + }, \ + { \ + \"metric\":\"cpu_load_2\", \ + \"timestamp\": 1626006833, \ + \"value\": 55.5, \ + \"tags\": \ + { \ + \"host\": \"ubuntu\", \ + \"interface\": \"eth2\", \ + \"Id\": \"tb2\" \ + } \ + } \ + ]", + "[ \ + { \ + \"metric\":\"cpu_load_1\", \ + \"timestamp\": 1626006834, \ + \"value\": 56.5, \ + \"tags\": \ + { \ + \"host\": \"ubuntu\", \ + \"interface\": \"eth1\", \ + \"Id\": \"tb1\" \ + } \ + }, \ + { \ + \"metric\":\"cpu_load_2\", \ + \"timestamp\": 1626006834, \ + \"value\": 56.5, \ + \"tags\": \ + { \ + \"host\": \"ubuntu\", \ + \"interface\": \"eth2\", \ + \"Id\": \"tb2\" \ + } \ + } \ + ]" + }; +void* code = taos_schemaless_insert(taos, message, 1, 3, NULL); +if (code) { + printf("payload_1 code: %d, %s.\n", code, tstrerror(code)); +} + taos_close(taos); +} diff --git a/docs-examples/csharp/ConnectExample.cs b/docs-examples/csharp/ConnectExample.cs index 6eef617015ed3f628b7f35bf2e553fdfc5eef558..0365d8e6722ace75abb92110102eb397180c1159 100644 --- a/docs-examples/csharp/ConnectExample.cs +++ b/docs-examples/csharp/ConnectExample.cs @@ -1,7 +1,10 @@ -namespace TDExamples + +namespace TDengineExample { - internal class ConnectExample + using TDengineDriver; + + internal class ConnectExample { static void Main(String[] args) { diff --git a/docs-examples/java/src/main/java/com/taos/example/JSONProtocolExample.java b/docs-examples/java/src/main/java/com/taos/example/JSONProtocolExample.java new file mode 100644 index 0000000000000000000000000000000000000000..a046a394e05666fdac0d096bf44cf9945672917b --- /dev/null +++ b/docs-examples/java/src/main/java/com/taos/example/JSONProtocolExample.java @@ -0,0 +1,5 @@ +package com.taos.example; + +public class JSONProtocolExample { + +} diff --git a/docs-examples/java/src/main/java/com/taos/example/LineProtocolExample.java b/docs-examples/java/src/main/java/com/taos/example/LineProtocolExample.java new file mode 100644 index 0000000000000000000000000000000000000000..1f1602d31ee7131f45cce41a581bce3ba9194114 --- /dev/null +++ b/docs-examples/java/src/main/java/com/taos/example/LineProtocolExample.java @@ -0,0 +1,46 @@ +package com.taos.example; + +import com.taosdata.jdbc.SchemalessWriter; +import com.taosdata.jdbc.enums.SchemalessProtocolType; +import com.taosdata.jdbc.enums.SchemalessTimestampType; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; + +public class LineProtocolExample { + // format: measurement,tag_set field_set timestamp + private static String[] lines = { + "meters,location=Beijing.Chaoyang,groupid=2 current=10.3,voltage=219,phase=0.31 1648432611249300", // micro seconds + "meters,location=Beijing.Chaoyang,groupid=2 current=12.6,voltage=218,phase=0.33 1648432611249800", + "meters,location=Beijing.Chaoyang,groupid=2 current=12.3,voltage=221,phase=0.31 1648432611250300", + "meters,location=Beijing.Chaoyang,groupid=3 current=10.3,voltage=218,phase=0.25 1648432611249200", + "meters,location=Beijing.Haidian,groupid=2 current=11.8,voltage=221,phase=0.28 1648432611249000", + "meters,location=Beijing.Haidian,groupid=2 current=13.4,voltage=223,phase=0.29 1648432611249500", + "meters,location=Beijing.Haidian,groupid=3 current=10.8,voltage=223,phase=0.29 1648432611249300", + "meters,location=Beijing.Haidian,groupid=3 current=11.3,voltage=221,phase=0.35 1648432611249800", + }; + + private static Connection getConnection() throws SQLException { + String jdbcUrl = "jdbc:TAOS://localhost:6030?user=root&password=taosdata"; + return DriverManager.getConnection(jdbcUrl); + } + + private static void createDatabase(Connection conn) throws SQLException { + try (Statement stmt = conn.createStatement()) { + // the default precision is ms (microsecond), but we use us(microsecond) here. + stmt.execute("create database test precision 'us'"); + stmt.execute("use test"); + } + } + + public static void main(String[] args) throws SQLException { + try (Connection conn = getConnection()) { + createDatabase(conn); + SchemalessWriter writer = new SchemalessWriter(conn); + writer.write(lines, SchemalessProtocolType.LINE, SchemalessTimestampType.MICRO_SECONDS); + } + } +} + diff --git a/docs-examples/java/src/main/java/com/taos/example/TelnetLineProtocolExample.java b/docs-examples/java/src/main/java/com/taos/example/TelnetLineProtocolExample.java new file mode 100644 index 0000000000000000000000000000000000000000..b9b049867f65be4d9c750faccc4add78e8ae0521 --- /dev/null +++ b/docs-examples/java/src/main/java/com/taos/example/TelnetLineProtocolExample.java @@ -0,0 +1,45 @@ +package com.taos.example; + +import com.taosdata.jdbc.SchemalessWriter; +import com.taosdata.jdbc.enums.SchemalessProtocolType; +import com.taosdata.jdbc.enums.SchemalessTimestampType; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; + +public class TelnetLineProtocolExample { + // format: =[ =] + private static String[] lines = {"meters.current 1648432611249 10.3 location=Beijing.Chaoyang groupid=2", + "meters.current 1648432611250 12.6 location=Beijing.Chaoyang groupid=2", + "meters.current 1648432611249 10.8 location=Beijing.Haidian groupid=3", + "meters.current 1648432611250 11.3 location=Beijing.Haidian groupid=3", + "meters.voltage 1648432611249 219 location=Beijing.Chaoyang groupid=2", + "meters.voltage 1648432611250 218 location=Beijing.Chaoyang groupid=2", + "meters.voltage 1648432611249 221 location=Beijing.Haidian groupid=3", + "meters.voltage 1648432611250 217 location=Beijing.Haidian groupid=3", + }; + + private static Connection getConnection() throws SQLException { + String jdbcUrl = "jdbc:TAOS://localhost:6030?user=root&password=taosdata"; + return DriverManager.getConnection(jdbcUrl); + } + + private static void createDatabase(Connection conn) throws SQLException { + try (Statement stmt = conn.createStatement()) { + // the default precision is ms (microsecond), but we use us(microsecond) here. + stmt.execute("create database test precision 'us'"); + stmt.execute("use test"); + } + } + + public static void main(String[] args) throws SQLException { + try (Connection conn = getConnection()) { + createDatabase(conn); + SchemalessWriter writer = new SchemalessWriter(conn); + writer.write(lines, SchemalessProtocolType.TELNET, SchemalessTimestampType.NOT_CONFIGURED); + } + } + +} diff --git a/docs-examples/python/async_query_example.py b/docs-examples/python/async_query_example.py new file mode 100644 index 0000000000000000000000000000000000000000..cc53e59d81a6bfd33d002f076a28016ece1a2b17 --- /dev/null +++ b/docs-examples/python/async_query_example.py @@ -0,0 +1 @@ +import taos \ No newline at end of file diff --git a/docs-examples/python/bind_param_example.py b/docs-examples/python/bind_param_example.py new file mode 100644 index 0000000000000000000000000000000000000000..cc53e59d81a6bfd33d002f076a28016ece1a2b17 --- /dev/null +++ b/docs-examples/python/bind_param_example.py @@ -0,0 +1 @@ +import taos \ No newline at end of file diff --git a/docs-examples/python/json_protocol_example.py b/docs-examples/python/json_protocol_example.py new file mode 100644 index 0000000000000000000000000000000000000000..20ff3176128bb8cffb843ff68a9c63945523bf57 --- /dev/null +++ b/docs-examples/python/json_protocol_example.py @@ -0,0 +1,35 @@ +import json + +import taos +from taos import SmlProtocol, SmlPrecision + +lines = [[{"metric": "meters.current", "timestamp": 1648432611249, "value": 10.3, "tags": {"location": "Beijing.Chaoyang", "groupid": 2}}, + {"metric": "meters.voltage", "timestamp": 1648432611249, "value": 219, "tags": {"location": "Beijing.Haidian", "groupid": 1}}], + [{"metric": "meters.current", "timestamp": 1648432611250, "value": 12.6, "tags": {"location": "Beijing.Chaoyang", "groupid": 2}}, + {"metric": "meters.voltage", "timestamp": 1648432611250, "value": 221, "tags": {"location": "Beijing.Haidian", "groupid": 1}}] + ] + + +def get_connection(): + # create connection use firstEp in taos.cfg. + return taos.connect() + + +def create_database(conn): + conn.execute("create database test") + conn.execute("use test") + + +def insert_lines(conn): + global lines + lines = [json.dumps(line) for line in lines] + print(lines) + affected_rows = conn.schemaless_insert(lines, SmlProtocol.JSON_PROTOCOL, SmlPrecision.NOT_CONFIGURED) + print(affected_rows) # 这里有 bug, 4 条数据只写入 2 条。 + + +if __name__ == '__main__': + connection = get_connection() + create_database(connection) + insert_lines(connection) + connection.close() diff --git a/docs-examples/python/line_protocol_example.py b/docs-examples/python/line_protocol_example.py new file mode 100644 index 0000000000000000000000000000000000000000..92c48d476b0cfa205a94fe97142878635cc2b9d4 --- /dev/null +++ b/docs-examples/python/line_protocol_example.py @@ -0,0 +1,35 @@ +import taos +from taos import SmlProtocol, SmlPrecision + +lines = ["meters,location=Beijing.Chaoyang,groupid=2 current=10.3,voltage=219,phase=0.31 1648432611249300", + "meters,location=Beijing.Chaoyang,groupid=2 current=12.6,voltage=218,phase=0.33 1648432611249800", + "meters,location=Beijing.Chaoyang,groupid=2 current=12.3,voltage=221,phase=0.31 1648432611250300", + "meters,location=Beijing.Chaoyang,groupid=3 current=10.3,voltage=218,phase=0.25 1648432611249200", + "meters,location=Beijing.Haidian,groupid=2 current=11.8,voltage=221,phase=0.28 1648432611249000", + "meters,location=Beijing.Haidian,groupid=2 current=13.4,voltage=223,phase=0.29 1648432611249500", + "meters,location=Beijing.Haidian,groupid=3 current=10.8,voltage=223,phase=0.29 1648432611249300", + "meters,location=Beijing.Haidian,groupid=3 current=11.3,voltage=221,phase=0.35 1648432611249800", + ] + + +def get_connection(): + # create connection use firstEP in taos.cfg. + return taos.connect() + + +def create_database(conn): + # the default precision is ms (microsecond), but we use us(microsecond) here. + conn.execute("create database test precision 'us'") + conn.execute("use test") + + +def insert_lines(conn): + affected_rows = conn.schemaless_insert(lines, SmlProtocol.LINE_PROTOCOL, SmlPrecision.MICRO_SECONDS) + print(affected_rows) # 8 + + +if __name__ == '__main__': + connection = get_connection() + create_database(connection) + insert_lines(connection) + connection.close() diff --git a/docs-examples/python/native_insert_example.py b/docs-examples/python/native_insert_example.py new file mode 100644 index 0000000000000000000000000000000000000000..cc53e59d81a6bfd33d002f076a28016ece1a2b17 --- /dev/null +++ b/docs-examples/python/native_insert_example.py @@ -0,0 +1 @@ +import taos \ No newline at end of file diff --git a/docs-examples/python/query_example.py b/docs-examples/python/query_example.py new file mode 100644 index 0000000000000000000000000000000000000000..bb45823ff5b0118aa92a6f2bac57335bb75118fc --- /dev/null +++ b/docs-examples/python/query_example.py @@ -0,0 +1,7 @@ +import taos + +conn = taos.connect() + + +def print_all(): + result = conn.query() diff --git a/docs-examples/python/telnet_line_protocol_example.py b/docs-examples/python/telnet_line_protocol_example.py new file mode 100644 index 0000000000000000000000000000000000000000..22141368a488a992e70af09a69b44ff87c32602d --- /dev/null +++ b/docs-examples/python/telnet_line_protocol_example.py @@ -0,0 +1,35 @@ +import taos +from taos import SmlProtocol, SmlPrecision + +# format: =[ =] +lines = ["meters.current 1648432611249 10.3 location=Beijing.Chaoyang groupid=2", + "meters.current 1648432611250 12.6 location=Beijing.Chaoyang groupid=2", + "meters.current 1648432611249 10.8 location=Beijing.Haidian groupid=3", + "meters.current 1648432611250 11.3 location=Beijing.Haidian groupid=3", + "meters.voltage 1648432611249 219 location=Beijing.Chaoyang groupid=2", + "meters.voltage 1648432611250 218 location=Beijing.Chaoyang groupid=2", + "meters.voltage 1648432611249 221 location=Beijing.Haidian groupid=3", + "meters.voltage 1648432611250 217 location=Beijing.Haidian groupid=3", + ] + + +# create connection use firstEp in taos.cfg. +def get_connection(): + return taos.connect() + + +def create_database(conn): + conn.execute("create database test") + conn.execute("use test") + + +def insert_lines(conn): + affected_rows = conn.schemaless_insert(lines, SmlProtocol.TELNET_PROTOCOL, SmlPrecision.NOT_CONFIGURED) + print(affected_rows) # 8 + + +if __name__ == '__main__': + connection = get_connection() + create_database(connection) + insert_lines(connection) + connection.close()