0

我正在尝试编写代码,使用 JAVA KuduClient API 将一些表从 SQL Server 传输到 KUDU。在 SQL 上,我得到一个具有复合主键的表(例如:PRIMARY KEY ([ID], [DATA_SOURCE]))。如何保证 KUDU 上的主键列的顺序相同?

ArrayList<ColumnSchema> columns = new ArrayList<>(1);
columns.add(new ColumnSchema.ColumnSchemaBuilder("DATA_SOURCE", 
    Type.STRING).nullable(false).key(true).build());
columns.add(new ColumnSchema.ColumnSchemaBuilder("DB_USER", 
    Type.STRING).nullable(false).build());
columns.add(new ColumnSchema.ColumnSchemaBuilder("ID", 
    Type.INT32).nullable(false).key(true).build());
Schema schema = new Schema(columns);
CreateTableOptions createOptions = new CreateTableOptions()
client.createTable(tableName, schema, createOptions);
4

1 回答 1

0

通常,这些列的创建顺序与它们在 中指定的顺序相同ArrayList<ColumnSchema> columns

但是Kudu中的模式设计存在一些限制。

构成主键的列必须在模式中首先列出。

SQL Server 中不存在此限制。因此,您可能被迫使用与 SQL Server 中使用的不同的列顺序。

PS:请问为什么需要列顺序和SQL Server一样?

于 2019-05-08T08:58:01.397 回答