如何处理数字开头的字段?

交互式分析Hologres兼容PostgreSQL,使用语法同PostgreSQL,不支持数字开头的字段。

如果您使用Hologres时遇到数字开头的字段,查询时需要为该字段增加双引号,示例如下。
select bizdate,"1_day_active_users","7_day_active_users" from t_active_users;

执行DROP TABLE语句报错:cannot drop table

  • 问题现象
    对表执行DROP TABLE语句时出现如下报错。drop table报错
  • 问题原因

    表存在相关依赖,例如有视图使用了此表,导致删除表失败。

  • 解决方法
    使用如下命令删除表的同时删除相关依赖。
    DROP TABLE <table_name> CASCADE;
    table_name为要删除表的名称。

写入或查询含有多表Join时报错: BinaryArray cannot contain more than 2147483646 bytes

  • 问题现象

    写入或查询命令中含有多表Join时报错:ERROR: BinaryArray cannot contain more than 2147483646 bytes, have xxx

  • 问题原因

    Hologres单个字段大小的上限是2 GB,在统计信息未及时更新的情况下,多表Join时生成了不合理的执行计划,从而出现超过2 GB的报错。

  • 解决方法
    对Join的表执行如下命令用于更新表的统计信息。
    analyze <tablename>;
    如果更新表的统计信息后仍然报错,说明数据中有较大字段,在SQL前使用如下命令添加GUC参数解决。
    set hg_experimental_query_batch_size = 1024;

建表时报错:CREATE TABLE is not supported for current instance

  • 问题现象

    建表时报错:CREATE TABLE is not supported for current instance

  • 问题原因

    当前实例是共享集群(实例Endpoint以hgmc开头,如hgmc-cn-xxwwwkkk,可以前往Hologres管理控台查看实例Endpoint),共享集群不支持创建内部表,只能创建外部表。

  • 解决方法
    • 按照创建外部表语法创建外部表,详情请参见CREATE FOREIGN TABLE
    • 使用Hologres独享示例,可支持创建内部表。

导入或者查询数据时报错:Cannot reserve capacity larger than 2^31 - 1 for binary

  • 问题现象

    在导入或者查询数据时报错:Cannot reserve capacity larger than 2^31 - 1 for binary

  • 问题原因及解决方法
    • 原因一:Hologres单个字段大小的上限为2 GB,在统计信息未及时更新的情况下,不合理的执行计划,从而出现超过2 GB的报错。
      解决方法:对表执行analyze命令,用于更新表的统计信息。
      analyze <tablename>;
    • 原因二:表字段数据量超过2 GB,导致报错。
      解决方法:在SQL前面添加以下GUC参数以降低每次Query读取的批次大小。
      set hg_experimental_query_batch_size = 1024;