读取和写入数据


将创建的通道授权给指定应用后,可通过调用数据联邦 API 接口,通过授权的通道,从数据源读取数据或向数据源写入数据。

前提条件

  • 已创建通道,并且通道处于运行状态

  • 已将通道授权给指定应用

读取数据

通过调用数据联邦API服务的读取数据(Read Data)接口,可使用SQL语句从数据源中查询符合条件的数据。有关调用数据联邦 API 的详细信息,前往 EnOS管理门户 > EnOS API 页面,查看数据联邦 API 文档。

SQL查询语句示例

show schemas

返回示例

{
    "status": 0,
    "msg": "success",
    "submsg": null,
    "data": {
        "queryState": "COMPLETED",
        "columns": [
            "SCHEMA_NAME"
        ],
        "metadata": [
            "VARCHAR"
        ],
        "rows": [
            {
                "SCHEMA_NAME": "mysql196.test1"
            },
            {
                "SCHEMA_NAME": "mysql196.test2"
            }
        ]
    }
}


该语句用于查询数据源。以上返回示例中,mysql196 为创建通道时自定义的数据源别名,test1test2 为数据源中数据库的名称。


在查询数据时,可将 mysql196.test1 视为 MySQL 数据库中的 Database 名称。用于数据查询的SQL语句的语法与 MySQL 语法基本相同,例如:

select * from mysql196.test1.user limit 100

写入数据

通过调用数据联邦 API 服务的写入消息和文件接口,可向数据源写入数据。有关调用数据联邦 API 的详细信息,前往 EnOS管理门户 > EnOS API 页面,查看数据联邦 API 文档。

写入数据到 MySQL 数据源示例

写入数据到 MySQL 数据源的数据格式如下:

{
  "dataSourceName": "data_source_name",
  "data":{
    "table": "table_name",
    "lines": [
      {
        "column_name": "value"
      }
    ]
  }
}


其中:

  • dataSourceName:数据源名称

  • data:需要写入的数据经过 JSON 转换后的结果

  • table:写入数据的表名

  • lines:需要写入的若干行数据,column_name 为字段名称,所有 value 都需要转换为字符串


实际写入数据示例如下:

{
    "dataSourceName": "mysql_remote",
    "data": "{\"table\":\"data\",\"lines\":[{\"WGEN.GenReactivePW\":\"2.5283\",\"ou_id\":\"o15622268182161\",\"WTUR.TurbineListSts\":\"5\",\"WTUR.TurbineUnionSts\":\"71\",\"WTUR.ConnectionSts\":\"0\",\"WGEN.GenActivePW\":\"45.700001\",\"WROT.TemB2Mot\":\"29.504801\",\"WTUR.TurbineTopSts\":\"2\",\"WGEN.TorqueSetpoint\":\"867.359375\",\"WWPP.PPCurrentDay\":\"0\",\"WCNV.GridFreq\":\"49.971561\",\"WWPP.PPCurrentYear\":\"17896\",\"dev_id\":\"04mmQAEM\",\"WNAC.TemOut\":\"25.691801\",\"WWPP.PPCurrentMonth\":\"33763\",\"WTUR.TurbineHealthSts\":\"0\",\"timeOfDay\":\"2019-09-01 00:00:00\",\"WTUR.TurbineGroupSts\":\"70\"},{\"WGEN.GenReactivePW\":\"2.7037\",\"ou_id\":\"o15622268182161\",\"WTUR.TurbineListSts\":\"5\",\"WTUR.TurbineUnionSts\":\"71\",\"WTUR.ConnectionSts\":\"0\",\"WGEN.GenActivePW\":\"45.439999\",\"WTUR.TurbineTopSts\":\"2\",\"WGEN.TorqueSetpoint\":\"865.127869\",\"WCNV.GridFreq\":\"49.998112\",\"dev_id\":\"04mmQAEM\",\"WTUR.TurbineHealthSts\":\"0\",\"timeOfDay\":\"2019-09-01 00:00:01\",\"WTUR.TurbineGroupSts\":\"70\"}]}"
}

写入数据到 Redis 数据源示例

写入数据到 Redis 数据源目前仅支持写入KV结构的数据,其数据格式如下:

{
  "dataSourceName": "data_source_name",
  "data":{
    "item": [
      {
        "key": "key",
        "value": "value"
      }
    ]
  }
}


其中:

  • dataSourceName:数据源名称

  • data:需要写入的数据经过 JSON 转换后的结果

  • item:需要写入 Redis 的若干 “key-value” 对集合,所有 “value” 都必须转换为字符串类型


实际写入数据示例如下:

{
    "dataSourceName": "redis_remote",
    "data": "{\"item\":[{\"key\":\"04mmQAEM\",\"value\":\"1180\"},{\"key\":\"1jbWuJA7\",\"value\":\"964\"}]}"
}