я хочу создать таблицу, но бот может ее создать

#sql #hive #hql

#sql #улей #hql

Вопрос:

я хочу создать таблицу в hive со свойством NOT NULL, но я не могу ее создать. в инструкции create table будет написано «Строка ParseException 1: 44 несоответствующий ввод ‘НЕ’ ожидаемый ) рядом ‘)'».

я пробовал использовать опцию первичного ключа, но она выдаст ту же ошибку

 create table AGENTS(agent_code varchar(10) NOT NULL ,
        agent_name varchar(40),
        working_area varchar(30),
        commission double(10,5),
        phone_no int(15),
        country varchar(25));
  

Комментарии:

1. Примечание: сохранение номера телефона в виде целого числа — действительно плохая идея. В некоторых странах начальные нули имеют значение. А как насчет иностранных nbr, таких как ‘ 44 0000000000’?

Ответ №1:

Я не думаю, что Hive поддерживает double с аргументами scale и precision. И я не думаю, что есть длина для int Возможно, вы имеете в виду числовую:

 create table AGENTS (
   agent_code varchar(10) NOT NULL ,
    agent_name varchar(40),
    working_area varchar(30),
    commission decimal(10, 5),
    phone_no decimal(15),
    country varchar(25)
);
  

NOT NULL ограничения введены относительно недавно, так что это также может быть проблемой.

Комментарии:

1. Hive поддерживает DECIMAL(p,s) или просто DECIMAL значение (10,0) по умолчанию. Не «числовой» .

2. @SamsonScharfrichter . . . Более поздние версии Hive поддерживают numeric ( cwiki.apache.org/confluence/display/Hive / … ) как и в основном все другие базы данных.

Ответ №2:

Проверьте свою версию Hive. Более старые версии Hive не поддерживают NOT NULL ограничение, как большинство баз данных. NOT NULL ограничение было введено начиная с версии 3.0.0.

Ссылка:https://issues.apache.org/jira/browse/HIVE-16575