建立映射關係
通過create table語句為已存在的表或者多元索引建立映射關係。建立映射關係時需要配置表的欄位名稱、欄位類型和主鍵資訊以及根據需要配置查詢資料時的執行引擎。
關於 CREATE TABLE 語句的文法和欄位類型映射規則,請參見建立表的映射關係和建立多元索引的映射關係。
前提條件
-
如需建立多元索引的映射關係,必須首先建立多元索引。
參數
|
參數 |
說明 |
|
query |
SQL 陳述式。填寫 CREATE TABLE 語句,列類型須與資料表中對應列的資料類型匹配。 |
樣本
以下樣本以資料表的映射關係為例。如需建立多元索引的映射關係,將樣本中的 SQL 陳述式替換為對應的多元索引 CREATE TABLE 語句即可。
與關係型資料庫不同,Tablestore 的 CREATE TABLE 語句不會建立表,而是為已有的 NoSQL 資料表建立 SQL 映射,使其支援 SQL 查詢。
以下樣本使用語句create table test_table (pk varchar(1024), long_value bigint, double_value double, string_value mediumtext, bool_value bool, primary key(pk))建立 test_table 資料表的映射關係。
const params = {
// CREATE TABLE 語句,為已有資料表建立 SQL 映射關係。
// 列類型須與資料表中對應列的資料類型匹配,SQL 文法詳見 CREATE TABLE 文法說明。
query: "create table test_table (pk varchar(1024), long_value bigint, double_value double, string_value mediumtext, bool_value bool, primary key(pk))",
}
client.sqlQuery(params, function (err, data) {
if (err) {
console.log('sqlQuery error:', err.toString());
} else {
console.log('sqlQuery success:', data);
}
});
常見問題
建立映射關係時出現Table 'instancename.tablename' doesn't exist ?
出現此問題的可能原因如下:
建立映射關係時,指定的表不存在。
解決方案:
SQL中的Create Table語句只能為已存在的表或者多元索引建立映射關係。請確保要建立映射關係的表或者多元索引存在。
建立映射關係時出現Table 'instancename.tablename' already exist ?
出現此問題的可能原因如下:
該表已建立映射關係。
使用者已手動為該表建立映射關係。
Table Store後台已自動建立該表的映射關係。在未建立資料表的映射關係的情況下,直接使用SQL語句(例如DESCRIBE、SELECT等)查詢資料,Table Store後台將自動建立該資料表的映射關係。自動建立的映射表僅包含資料表的主鍵列和預定義列,並且不支援更新屬性列。
解決方案:
您可以通過
DESCRIBE語句查看現有映射表的表結構,如果不符合業務查詢要求,您可以更新映射表屬性列。系統自動建立的映射表無法更新屬性列,請在確保不影響業務的情況下刪除並重新建立映射表。
更多關於SQL查詢功能的常見錯誤及其解決方案,請參見SQL查詢常見錯誤排查。