2015-05-25 14 views
8

Tôi không thể nối thêm dữ liệu vào các bảng có chứa một cột mảng bằng cách chèn vào các câu lệnh; kiểu dữ liệu là mảng < varchar (200)>Hive chèn các giá trị vào một cột kiểu mảng phức tạp

Sử dụng jodbc Tôi không thể chèn giá trị vào một cột mảng bởi các giá trị như:

INSERT INTO demo.table (codes) VALUES (['a','b']); 

không công nhận "[" hoặc "{" dấu hiệu .

Sử dụng chức năng mảng như ...

INSERT INTO demo.table (codes) VALUES (array('a','b')); 

tôi nhận được lỗi sau sử dụng chức năng mảng:

Unable to create temp file for insert values Expression of type TOK_FUNCTION not supported in insert/values 

Cố gắng thực hiện giải pháp ...

INSERT into demo.table (codes) select array('a','b'); 

không thành công:

Failed to recognize predicate '<EOF>'. Failed rule: 'regularBody' in statement 

Làm cách nào để tải dữ liệu mảng vào các cột bằng jdbc?

Trả lời

2

tạo bảng dummy có ít nhất 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) 
+0

Bạn có thể vui lòng cụ thể những gì bảng giả cần chứa không? –

+0

bảng giả là một bảng demo đơn giản có ít nhất một hàng. –

+0

Tôi đã tạo một bảng giả với hai trường STRING và sử dụng lệnh 'INSERT INTO ADS (pageid, adid_list) VALUES ('front_page', array (1,2,3)) FROM DUMMY LIMIT 1;' và nhận được lỗi: ' FAILED: ParseException dòng 1:16 không thể nhận ra đầu vào gần '(' 'pageid' ',' trong câu lệnh'. Bạn có thể trợ giúp ở đây không !! – SrinivasR

5

Bảng của tôi có hai cột: a STRING, b ARRAY<STRING>.

Khi tôi sử dụng phương pháp @Kishore Kumar Suthar, tôi nhận điều này:

FAILED: ParseException line 1:33 cannot recognize input near '(' 'a' ',' in statement

Nhưng tôi tìm thấy một cách khác, và nó làm việc cho tôi:

INSERT INTO test.table 
SELECT "test1", ARRAY("123", "456", "789") 
FROM dummy LIMIT 1; 

dummy là bất kỳ bảng có ít nhất một hàng.

Các vấn đề liên quan