#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.