IoTDB数据库使用笔记

最近刚刚准备在一个新项目里面使用IoTDB,在采用的过程其实不断会踩坑。把自己踩的坑整一下。

查询数据时软件直接卡死

软件本身是用WPF开发,同样的代码,在测试工程里面执行一切正常,在项目工程里面执行操作就直接软件卡死。
后面发现,会卡死在resultSet.HasNext()的语句上。
解决的办法也很简单,整个查询的操作包在线程里就可以了。

保存和查询时的时间格式

保存记录的时候,直接传DateTime进去就可以了。这个是最方便的。
查询的SQL语句里面,时间按照下面的格式:
1、yyyy-MM-dd HH:mm:ss
2、yyyy-MM-ddTHH:mm:ss

服务端的程序的执行

服务端的程序,保存的上级目录不能包括空格,前面图方便放在“D:\Program Files”文件夹下,发现一直执行不了。
发给同事试了一下,却能正常执行的,后面发现只要目录不包含空格就可以了。

示例代码

            var startTime = StartTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
            var endTime = EndTime.Value.AddDays(1).ToString("yyyy-MM-dd HH:mm:ss");

            using var scope = new BusyScope(this);

            var items = await Task.Run(async () =>
            {
                StringBuilder builder = new StringBuilder();
                var session_pool = await _ioTDBController.GetSessionPool();
                builder.Append($"SELECT * FROM root.{SelectedSource.SourceGuid.ToMD5()}.{SelectedPackage.MapPackageGuid.ToMD5()}");
                builder.Append($" where time>={startTime} and time<{endTime}");
                builder.Append(" limit 10000");
                var query = builder.ToString();
                _logger.Debug(query);
                SessionDataSet resultSet = await session_pool.ExecuteQueryStatementAsync(query);

                var recordList = new List<RowRecord>();
                while (resultSet.HasNext())
                {
                    RowRecord record = resultSet.Next();
                    recordList.Add(record);
                }

                return recordList;
            });
posted @ 2024-02-27 10:21  wzwyc  阅读(11)  评论(0编辑  收藏  举报