使用 Impala ODBC 驱动程序查询参数

Query parameters with Impala ODBC driver

我正在使用 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();

抛出以下异常。

{"ERROR [HY000] [Cloudera][ImpalaODBC] (110) Error while executing a query in Impala: [HY000] : AnalysisException: Syntax error in line 1:\nINSERT INTO TABLE test VALUES(?, ?)\n
^\nEncountered: Unexpected character\nExpected: CASE, CAST, EXISTS, FALSE, IF, INTERVAL, NOT, NULL, TRUNCATE, TRUE, IDENTIFIER\n\nCAUSED BY: Exception: Syntax error\n"}

哪个应该管理查询参数(以及用值替换 ?)、ODBC 库或驱动程序?它似乎是驱动程序,在这种情况下,它没有实现......很遗憾,因为我不能使用准备好的语句。

有人知道在 Impala ODBC 驱动程序中使用查询参数的方法吗?

INSERT INTO TABLE 是 Impala 特定的语法。要使用 Impala ODBC 执行带参数的 INSERT,您需要 SQL 92 语法,即 INSERT INTO <table name> ...

你能试试下面的语法,看看是否有帮助吗?

INSERT INTO test VALUES(?, ?)