我无法使用insert into语句将数据附加到包含数组列的表中;数据类型是数组< varchar(200)>
使用jodbc我无法通过以下值将值插入数组列:
INSERT INTO demo.table (codes) VALUES (['a','b']);
无法识别“[”或“{”符号。
使用类似...的数组函数
INSERT INTO demo.table (codes) VALUES (array('a','b'));
我使用数组函数得到以下错误:
Unable to create temp file for insert values Expression of type TOK_FUNCTION not supported in insert/values
尝试了解决方法......
INSERT into demo.table (codes) select array('a','b');
不成功:
Failed to recognize predicate '<EOF>'. Failed rule: 'regularBody' in statement
如何使用jdbc将数组数据加载到列中?
答案 0 :(得分:5)
我的表格有两列:a STRING, b ARRAY<STRING>
。
当我使用@Kishore Kumar Suthar的方法时,我得到了这个:
FAILED: ParseException line 1:33 cannot recognize input near '(' 'a' ',' in statement
但我找到另一种方式,它对我有用:
INSERT INTO test.table
SELECT "test1", ARRAY("123", "456", "789")
FROM dummy LIMIT 1;
dummy
是任何至少有一行的表。
答案 1 :(得分:2)
制作一个dummy
表格,其中包含至少one row
。
INSERT INTO demo.table (codes) VALUES (array('a','b')) from dummy limit 1;
hive> select codes demo.table;
OK
["a","b"]
Time taken: 0.088 seconds, Fetched: 1 row(s)
答案 2 :(得分:0)
假设我有一个表职员,其中包含字段 ID 和 Name 。
我用字段 ID 和 Address 创建另一个表employee_address。地址是 array(string)类型的复杂数据。
这是我可以在其中插入值的方法:
insert into table employee_address select 1, 'Mark', 'Evans', ARRAY('NewYork','11th
avenue') from employee limit 1;
在此,表员工只是充当虚拟表。没有数据从中复制。其架构可能与employee_address不匹配。没关系。