public Map<String, List<ColumnMeta>> loadColumnMetas(List<String> tables) throws DataXException {
        Map<String, List<ColumnMeta>> ret = new HashMap<>();

        for (String table : tables) {
            List<ColumnMeta> columnMetaList = new ArrayList<>();
            try (Statement stmt = conn.createStatement()) {
                ResultSet rs = stmt.executeQuery("describe " + table);
                for (int i = 0; rs.next(); i++) {
                    ColumnMeta columnMeta = buildColumnMeta(rs, i == 0);
                    columnMetaList.add(columnMeta);
                }
            } catch (SQLException e) {
                throw DataXException.asDataXException(TDengineWriterErrorCode.RUNTIME_EXCEPTION, e.getMessage());
            }

            if (columnMetaList.isEmpty()) {
                LOG.error("column metadata of " + table + " is empty!");
                continue;
            }

            columnMetaList.stream().filter(colMeta -> colMeta.isTag).forEach(colMeta -> {
                String sql = "select " + colMeta.field + " from " + table;
                Object value = null;
                try (Statement stmt = conn.createStatement()) {
                    ResultSet rs = stmt.executeQuery(sql);
                    for (int i = 0; rs.next(); i++) {
                        value = rs.getObject(colMeta.field);
                        if (i > 0) {
                            value = null;
                            break;
                        }
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                colMeta.value = value;
            });

            LOG.debug("load column metadata of " + table + ": " + Arrays.toString(columnMetaList.toArray()));
            ret.put(table, columnMetaList);
        }
        return ret;
    }
@Test
    public void loadColumnMetas() {
        // given
        SchemaManager schemaManager = new SchemaManager(conn);
        List<String> tables = Arrays.asList("stb1", "stb2", "tb1", "tb3", "weather");

        // when
        Map<String, List<ColumnMeta>> columnMetaMap = schemaManager.loadColumnMetas(tables);

        // then
        List<ColumnMeta> stb1 = columnMetaMap.get("stb1");
        Assert.assertEquals(4, stb1.size());
    }