1. 在系统驱动列表里添加iHyperDB ODBC驱动:
(1) 安装iHyperDB客户端;
安装完成后,先在LogClient.xml配置文件里加上ODBC相关配置,不然ODBC安装和调用都会有问题!
填写完ODBC日志配置后,以管理员身份打开cmd命令行,跳转至安装目录的executable文件夹,执行"hdODBCInst.exe -install"命令安装ODBC动态库,
确保windows的32位库文件夹里被安装程序复制了hdODBC.dll,才能进行下一步(win10系统里,32位库文件夹名称是"SysWOW64",64位库文件夹名称是"System32")
(2) 打开系统ODBC(32位)驱动列表,准备添加ODBC数据源;
(3) 填写iHyperDB ODBC驱动的详细信息,填写完点击确定。
数据源名称:iHyperDB ODBC驱动在驱动源列表里的注册名称;
数据源描述:对iHyperDB ODBC驱动的描述;
主机IP和端口:IHD数据库的主机IP和端口号;
备机IP和端口:IHD数据库的备机IP和端口号;
用户名:登录IHD数据库的用户名;
密码:登录IHD数据库的密码;
添加成功后,在用户DSN列表里可以看到iHyperDB ODBC的数据源名称。
2. WPS excel查询并导入IHD数据
打开WPS excel的导入数据接口,
按照以下步骤加载IHD数据:
(1) 选择ODBC数据源,点击"其他/高级";
在弹出的窗口选择ODBC Drivers
在"机器数据源"列表里选择其他之前配置好的iHyperDB ODBC数据源
如果成功连接至数据源,会在窗口信息里看到iHyperDB ODBC的相关配置信息
(2) 选择IHD表和字段
在"表名"这一栏,可以选择IHD数据表,
点击">"或者">>"按钮,可以添加一个或者所有的选定字段。接着点击"下一步"进入SQL语句生成页面。
(3) excel自动生成SQL语句步骤
如图所示,excel会根据上一阶段选中的表和字段,自动生成对应的SQL语句。但是默认生成的SQL不符合IHD查询语法!
需要注意的是,查询IHD数据的SQL语句,必须要有where条件,也就是每次查询都需要手动输入符合IHD规则的SQL语句!
点击按钮"1"并输入SQL语句后,再点击"下一步",进入查询数据的预览页面。
(4) 数据查询结果预览和导入
在预览页面,点击"完成",即可将数据导入excel表格。
3. iHyperDB ODBC支持的常用SQL查询语法
(1) 查询实时值
SELECT [字段列1,字段列2,...] FROM HDRealTime WHERE FTAG='点名'
示例如下:
实时值:
// 查询单个tag点的实时值
SELECT * FROM HDRealTime WHERE FTAG = 'hdsys_cpu_0'
SELECT FTAG, FTIME, FQUALITY, FIVALUE, FTAGTYPE FROM HDRealTime WHERE FTAG = 'hdsys_cpu_0'
// 实时值模糊查询
SELECT * FROM HDRealTime WHERE FTAG = 'hd*'
SELECT * FROM HDRealTime WHERE FTAG = '*_cpu_0'
(2) 查询历史值
SELECT [字段列1,字段列2,...] FROM HDArch WHERE FTAG = '点名' AND FTIME < '时间' limit 1000
(查询历史值必须要加limit限制记录条数,并且历史值不能模糊查询)
示例如下:
历史值:
// 查询单个tag点的前1000个历史值
SELECT * FROM HDArch WHERE FTAG = 'hdsys_cpu_0' AND FTIME < '2024-03-21 14:04:42.000' limit 1000
SELECT FTAG, FTIME, FQUALITY, FIVALUE, FTAGTYPE FROM HDArch WHERE FTAG = 'hdsys_cpu_0' AND FTIME < '2024-03-21 14:04:42.000' limit 1000
(3) 查询插值
SELECT [字段列1,字段列2,...] FROM HDInter WHERE FTAG = '点名' AND FTIME > '时间' AND FTIMESTEP = '时间间隔(秒)' AND FINTERTYPE = PREV limit 1000
(查询插值必须要加limit限制记录条数,并且插值不能模糊查询)
示例如下:
插值:
// 查询单个tag点的前1000个插值
SELECT * FROM HDInter WHERE FTAG = 'hdsys_cpu_0' AND FTIME > '2024-03-21 13:05:53.000'AND FTIMESTEP = 10S AND FINTERTYPE = PREV limit 1000
SELECT FTAG, FTIME, FQUALITY, FIVALUE, FTIMESTEP, FINTERTYPE, FTAGTYPE FROM HDInter WHERE FTAG = 'hdsys_cpu_0' AND FTIME > '2024-03-21 13:05:53.000'AND FTIMESTEP = 10S AND FINTERTYPE = PREV limit 1000