2015-12-04 3 views
0

Я использую драйвер Impala ODBC от Cloudera. Мне не удается использовать параметры запроса. Например:Параметры запроса с помощью драйвера Impala ODBC

OdbcCommand command = DbConnection.CreateCommand(); 
command.CommandText = "INSERT INTO TABLE test VALUES(?, ?)"; 
command.Parameters.Add("key", OdbcType.VarChar).Value = "csharp"; 
command.Parameters.Add("val", OdbcType.VarChar).Value = "test"; 
command.ExecuteNonQuery(); 

бросает следующее исключение.

{ "ОШИБКА [HY000] [Cloudera] [ImpalaODBC] (110) Ошибка при выполнении запроса в Impala: [HY000]: AnalysisException: Синтаксис ошибка в строке 1: \ nВставить, несмотря в таблицу контрольных значений (?,) \ п
^ \ nEncountered: Неожиданный символ \ nExpected: СЛУЧАЙ, CAST, EXISTS, FALSE, IF, ИНТЕРВАЛ, NOT NULL, TRUNCATE, TRUE, IDENTIFIER \ п \ nCAUSED BY: Исключение: ошибка синтаксиса \ n "}

Что должно управлять параметрами запроса (и заменой? по значениям), библиотекой ODBC или драйвером? Кажется, это драйвер, и в этом случае он не реализован ... И это позор, потому что я не могу использовать подготовленный оператор.

Кто-нибудь знает способ использования параметра запроса с драйвером impala odbc?

ответ

1

INSERT INTO TABLE - синтаксис Impala. Чтобы использовать Impala ODBC для выполнения INSERT с параметрами, вам нужен синтаксис SQL 92, который равен INSERT INTO <table name> ...

Можете ли вы попробовать следующий синтаксис и посмотреть, поможет ли он?

INSERT INTO test VALUES(?, ?)

+0

Он работает с INSERT INTO тест ЗНАЧЕНИЯ (?,?). Однако он не работает с тестом INSERT INTO (col1, col2) VALUES (?,?), Но мне будет достаточно. благодаря – Arthur