семантическое исключение улья при вставке данных

Я создал таблицу-улей с помощью ORC. Если я вставляю данные из консоли улья, это работает отлично, но если я вставляю данные из кода Jdbc, это вызывает семантическое исключение улья.

Ошибка

Мой запрос вставки

любая помощь будет оценена по достоинству.

result = name+","+age+","+job;
String stmt = "INSERT INTO table real_estate.addressinformation_orc VALUES(" + result + ")";

Вам нужно указать строки в кавычках. Предполагая, что возраст является целым числом, это сработает, но это плохое решение:


person Nimmy    schedule 03.02.2016    source источник


Ответы (2)


Это базовое решение, потому что если имя и работа содержат цитату, это нарушит ваш код. Гораздо лучшее решение - использовать подготовленные операторы. С подготовленными операторами вам не нужно беспокоиться о цитировании:

result = "'" + name + "'," + age + ",'" + job + "'"

Вам нужно добавить переменную результата в строковые кавычки.

preparedStatement = dbConnection.
  prepareStatement("INSERT INTO table " +     
    "real_estate.addressinformation_orc VALUES(?,?,?)");

preparedStatement.setString(1, name);
preparedStatement.setInt(2, age);
preparedStatement.setString(3, job);

// execute insert SQL stetement
preparedStatement.executeUpdate();
person Roberto Congiu    schedule 04.02.2016

Например: вставить в таблицу значения test1 (sno, name) (1, jj);

Выше строка выдает ошибку, если мы редактируем то же, что и ниже, она работает

вставить в таблицу test1 (sno, name) значения (1, "jj");

Здесь тип данных name - строка

rg.apache.hive.service.cli.HiveSQLException: Ошибка при компиляции оператора: FAILED: SemanticException [Ошибка 10293]: невозможно создать временный файл для вставки значений. Выражение типа TOK_TABLE_OR_COL не поддерживается в insert / values ​​org.apache.hive.service .cli.operation.Operation.toSQLException (Operation.java:326) org.apache.hive.service.cli.operation.SQLOperation.prepare (SQLOperation.java:102) org.apache.hive.service.cli.operation.SQLOperation .runInternal (SQLOperation.java:171) org.apache.hive.service.cli.operation.Operation.run (Operation.java:268) org.apache.hive.service.cli.session.HiveSessionImpl.executeStatementInternal (HiveSessionImpl.java : 410) org.apache.hive.service.cli.session.HiveSessionImpl.executeStatementAsync (HiveSessionImpl.java:397) sun.reflect.GeneratedMethodAccessor24.invoke (Неизвестный источник) sun.reflect.DelegatingMethodAccessorImpl.in java.lang.reflect.Method.invoke (Method.ja va: 606) org.apache.hive.service.cli.session.HiveSessionProxy.invoke (HiveSessionProxy.java:78) org.apache.hive.service.cli.session.HiveSessionProxy.access $ 000 (HiveSessionProxy.java:36) org .apache.hive.service.cli.session.HiveSessionProxy $ 1.run (HiveSessionProxy.java:63) java.security.AccessController.doPrivileged (собственный метод) javax.security.auth.Subject.doAs (Subject.java:415) org .apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1671) org.apache.hive.service.cli.session.HiveSessionProxy.invoke (HiveSessionProxy.java:59) com.sun.proxy. $ Proxy25.executeStatementAsync ( Неизвестный источник) org.apache.hive.service.cli.CLIService.executeStatementAsync (CLIService.java:258) org.apache.hive.service.cli.thrift.ThriftCLIService.ExecuteStatement (ThriftCLIService.java:509.h) org. .service.cli.thrift.TCLIService $ Processor $ ExecuteStatement.getResult (TCLIService.java:1313) org.apache.hive.service.cli.thri ft.TCLIService $ Processor $ ExecuteStatement.getResult (TCLIService.java:1298) org.apache.thrift.ProcessFunction.process (ProcessFunction.java:39) org.apache.thrift.TBaseProcessor.process (TBaseProcessor.java:39) org. apache.hive.service.auth.TSetIpAddressProcessor.process (TSetIpAddressProcessor.java:56) org.apache.thrift.server.TThreadPoolServer $ WorkerProcess.run (TThreadPoolServer.java:285) java: 1145) java.util.concurrent. ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615) java.lang.Thread.run (Thread.java:745)

person kiran    schedule 01.11.2017