public static void createTableIfNotExist()

in java/core/src/main/java/com/aliyun/openservices/tablestore/agent/util/TablestoreHelper.java [113:179]


    public static void createTableIfNotExist(
        SyncClient client,
        String tableName,
        List<Pair<String, MetaType>> primaryKeys,
        List<Pair<String, MetaType>> definedColumns
    ) {
        ListTableResponse listTableResponse = client.listTable();
        for (String name : listTableResponse.getTableNames()) {
            if (name.equals(tableName)) {
                log.warn("tablestore table:[{}] already exists", tableName);
                return;
            }
        }
        TableMeta tableMeta = new TableMeta(tableName);
        for (Pair<String, MetaType> pk : primaryKeys) {
            String name = pk.getKey();
            MetaType type = pk.getValue();
            switch (type) {
                case STRING:
                    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema(name, PrimaryKeyType.STRING));
                    break;
                case INTEGER:
                    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema(name, PrimaryKeyType.INTEGER));
                    break;
                case BINARY:
                    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema(name, PrimaryKeyType.BINARY));
                    break;
                default:
                    throw Exceptions.illegalArgument("unsupported primary key name:%s type:%s", name, type);
            }
        }
        if (definedColumns != null) {
            for (Pair<String, MetaType> definedColumn : definedColumns) {
                String name = definedColumn.getKey();
                MetaType type = definedColumn.getValue();
                switch (type) {
                    case STRING:
                        tableMeta.addDefinedColumn(new DefinedColumnSchema(name, DefinedColumnType.STRING));
                        break;
                    case INTEGER:
                        tableMeta.addDefinedColumn(new DefinedColumnSchema(name, DefinedColumnType.INTEGER));
                        break;
                    case DOUBLE:
                        tableMeta.addDefinedColumn(new DefinedColumnSchema(name, DefinedColumnType.DOUBLE));
                        break;
                    case BOOLEAN:
                        tableMeta.addDefinedColumn(new DefinedColumnSchema(name, DefinedColumnType.BOOLEAN));
                        break;
                    case BINARY:
                        tableMeta.addDefinedColumn(new DefinedColumnSchema(name, DefinedColumnType.BINARY));
                        break;
                    default:
                        throw Exceptions.illegalArgument("unsupported defined column name:%s type:%s", name, type);
                }
            }
        }
        TableOptions tableOptions = new TableOptions(-1, 1);
        CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
        request.setReservedThroughput(new ReservedThroughput(new CapacityUnit(0, 0)));
        log.info("tablestore create table:[{}] successfully.", tableName);
        try {
            client.createTable(request);
            Thread.sleep(1000);
        } catch (Exception e) {
            throw Exceptions.runtimeThrowable(String.format("tablestore create table:[%s] failed", tableName), e);
        }
    }