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;

有关详细信息,请参阅不可变表