我必须用c语言编写一个应用程序,从文件中读取数十亿条记录,然后通过impala odbc在impala表中写入记录。我已经尝试使用带有参数的单个语句执行insert查询
INSERT INTO table VALUES (?,?,.....,?)
或使用多个插入:
INSERT INTO table VALUES (?,?,.....,?),(?,?,.....,?),...,(?,?,.....,?)
但是firs非常慢,并且为每个记录在hdfs上创建一个文件;第二个更快,但查询非常长,对于数十亿条记录,我收到以下错误:
[cloudera][sqlengine](31580)语句长度超过最大值:16384。
考虑到我的应用程序必须使用c语言,有人对我的问题有一些解决方案。
谢谢
1条答案
按热度按时间tcomlyy61#
我认为你需要不同的方法来做这件事。i、 e.不要通过c读取csv,而只是将其中的值发送到服务器。而是对服务器发出命令来读取文件。
首先,为数据库中的csv文件创建一个表。您可以决定这是需要通过编程方式还是通过工具来完成。然后用
LOAD DATA
语句放入新表中。然后使用INSERT INTO SELECT ...
语句来操作新创建的表。伪代码示例: