SQL 函数和语句
INFER_TABLE_DDL 支持 JSON
您现在可以使用 INFER_TABLE_DDL 函数从 JSON 文件生成候选表定义。因为 JSON 文件不含显式架构,因此该函数会直接检查数据本身。JSON 数据可能因记录或文件而异,因此该函数可能会返回多个候选定义。在以下示例中,以高亮方式显示了差异:
=> SELECT INFER_TABLE_DDL ('/data/*.json'
USING PARAMETERS table_name='restaurants', format='json',
max_files=3, max_candidates=3);
WARNING 0: This generated statement contains one or more float types which might lose precision
WARNING 0: This generated statement contains one or more varchar/varbinary types which default to length 80
INFER_TABLE_DDL
------------------------------------------------------------------------
Candidate matched 1/2 of total files(s):
create table "restaurants"(
"cuisine" varchar,
"location_city" Array[varchar],
"menu" Array[Row(
"item" varchar,
"price" float
)],
"name" varchar
);
Candidate matched 1/2 of total files(s):
create table "restaurants"(
"cuisine" varchar,
"location_city" Array[varchar],
"menu" Array[Row(
"items" Array[Row(
"item" varchar,
"price" numeric
)],
"time" varchar
)],
"name" varchar
);
(1 row)
不可变表
不可变表只能插入,无论用户权限如何,都无法修改其中的现有数据。禁止更新行值和删除行。同时禁止对表元数据的某些更改(例如,重命名表),以防止尝试避开这些限制。
您可以使用 ALTER TABLE 将现有表设置为不可变:
ALTER TABLE table SET IMMUTABLE ROWS;
有关详细信息,请参阅不可变表。