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を使用して配列データを列にロードするにはどうすればよいですか?
私のテーブルには2つの列があります: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行あるテーブルです。
少なくともone row
を持つdummy
テーブルを作成します。
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)
フィールド[〜#〜] id [〜#〜]およびNameを含むテーブルemployeeがあるとします。
フィールド[〜#〜] 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と一致しない可能性があります。それは問題ではありません。