我在通过odbc impala(最新版本)进行多个插入时遇到问题。
我试图在一个有4列的impala表(在cloudera上)中插入2000行,但收到两个错误:
[cloudera][sqlengine](31580)语句长度超过最大值:16384[cloudera][impalaodbc](110)在impala:[hy000]中执行查询时出错:analysisexception:第1行出现语法错误:。。。
我正在使用查询参数化查询:
INSERT INTO name_table (a,b,c,d) VALUES (?,?,?,?) , (?,?,?,?) , ....
现在我的问题是:
有没有一种方法可以使用odbc驱动程序插入数百万行而不使用单个插入?
谢谢您。
2条答案
按热度按时间cbjzeqam1#
目前,一个查询最多有16384个字符,这看起来应该是一个更高的限制。我们目前正在调查,看看这个下限是否有原因。
也就是说,通过odbc插入多个值的更有效方法是使用查询:
INSERT INTO name_table (a,b,c,d) VALUES (?,?,?,?)
然后使用数组绑定将多个参数集绑定到您的参数。这样,驱动程序就可以在内部优化执行,而不会遇到查询长度限制。你已经试过这个了吗?piwo6bdm2#
我已经尝试执行以下代码:
最后,我的表只由一条记录和前四个参数值组成。
我的代码有问题吗?
谢谢。