This topic describes how to create a data table by calling the CreateTable operation. When you call the CreateTable operation, you must specify the schema information and configuration information of the data table. You can set reserved read throughput and reserved write throughput for data tables in high-performance instances based on your business requirements. You can create one or more index tables when you create a data table.
- After a data table is created, it takes several seconds to load the data table. During this period, read and write operations performed on the table may fail. Perform operations on the data table after the data table is loaded.
- You must specify the primary key when you create a data table. A primary key can contain one to four primary key columns. Each primary key column has a name and a data type.
Prerequisites
- An instance is created in the console. For more information, see Create instances.
- An OTSClient instance is initialized. For more information, see Initialization.
API operations
/// <summary>
/// Create a table based on table information including the table name, primary key schema, and reserved read and write throughput.
/// </summary>
/// <param name="request">Request parameter</param>
/// <returns>Information returned by CreateTable. The result is null.
/// </returns>
public CreateTableResponse CreateTable(CreateTableRequest request);
/// <summary>
/// Asynchronous mode of CreateTable.
/// </summary>
public Task<CreateTableResponse> CreateTableAsync(CreateTableRequest request);
Parameters
Parameter | Description |
---|---|
tableMeta | The schema information about the data table. The schema information contains the following items:
|
tableOptions | The configuration information about the data table. For more information, see Data versions and TTL. The configuration information contains the following items:
|
reservedThroughput | The reserved read throughput and reserved write throughput of the data table. You can set the reserved read throughput or reserved write throughput only to 0 for data tables in capacity instances. Reserved throughput does not apply to these instances. The default value 0 indicates that you are billed for all throughput on a pay-as-you-go basis. Unit: capacity unit (CU).
|
indexMetas | The schema information about the index table. Each indexMeta contains the following items:
|
Examples
- Create a data table without creating an index table
The following code provides an example on how to create a data table that has two primary key columns and reserved read and write throughput of (0, 0):
// Create a schema for primary key columns, which includes the number, names, and types of the primary key columns. // The first primary key column is named pk0, and is also the partition key. The type of the first primary key column is INTEGER. // The second primary key column is named pk1 and the type of the second primary key column is STRING. var primaryKeySchema = new PrimaryKeySchema(); primaryKeySchema.Add("pk0", ColumnValueType.Integer); primaryKeySchema.Add("pk1", ColumnValueType.String); // Create a tableMeta class based on the table name and the schema for primary key columns. var tableMeta = new TableMeta("SampleTable", primaryKeySchema); // Set the reserved read throughput and reserved write throughput to 0. var reservedThroughput = new CapacityUnit(0, 0); try { // Construct a CreateTableRequest object. var request = new CreateTableRequest(tableMeta, reservedThroughput); // Call the CreateTable operation of the client. If no exception is returned, a table is created. otsClient.CreateTable(request); Console.WriteLine("Create table succeeded."); } // If an exception is returned, no table is created and you need to handle the exception. catch (Exception ex) { Console.WriteLine("Create table failed, exception:{0}", ex.Message); }
For the detailed sample code, visit CreateTable@GitHub.
- Create a data table and an index table for the data table
public static void CreateTableWithGlobalIndex() { // Create a table that contains two primary key columns Pk1 and Pk2 and set the predefined columns to Col1 and Col2. // Create an index table and set one primary key column of the index table to Col1. The name of the primary key column is Pk0. OTSClient otsClient = Config.GetClient(); Console.WriteLine("Start create table with globalIndex..."); PrimaryKeySchema primaryKeySchema = new PrimaryKeySchema { { Pk1, ColumnValueType.String }, { Pk2, ColumnValueType.String } }; TableMeta tableMeta = new TableMeta(TableName, primaryKeySchema); tableMeta.DefinedColumnSchema = new DefinedColumnSchema { { Col1, DefinedColumnType.STRING}, { Col2, DefinedColumnType.STRING} }; IndexMeta indexMeta = new IndexMeta(IndexName); indexMeta.PrimaryKey = new List<string>() { Col1 }; indexMeta.DefinedColumns = new List<string>() { Col2 }; //indexMeta.IndexType = IndexType.IT_GLOBAL_INDEX; //indexMeta.IndexUpdateModel = IndexUpdateMode.IUM_ASYNC_INDEX; List<IndexMeta> indexMetas = new List<IndexMeta>() { }; indexMetas.Add(indexMeta); CapacityUnit reservedThroughput = new CapacityUnit(0, 0); CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput, indexMetas); otsClient.CreateTable(request); Console.WriteLine("Table is created: " + TableName); }