MonetDB Mapi库数据插入

问题描述

void * Data [NUM_ROW][NUM_COLS];   

string insertTablePrepare = "INSERT INTO temp VALUES(";
      for (size_t k = 0; k < NUM_COLS; k++) {
          insertTablePrepare += "?";
          if (k==NUM_COLS-1) continue;
          insertTablePrepare += ",";
      }
      insertTablePrepare += ")";

hdl = mapi_prepare(dbh,insertTablePrepare.c_str());

for (size_t j = 0; j < NUM_ROW; j++) {
         for (size_t k = 0; k < NUM_COLS; k++) {
              switch (ColumnDataType[k]) {
                       case VARCHAR:
                          ret = mapi_param_type(hdl,k,MAPI_VARCHAR,Data[j][k]);
                       break;
                       case SMALLINT:
                          ret = mapi_param_type(hdl,MAPI_SHORT,Data[j][k]);
                       break;
                       case INT:
                          ret = mapi_param_type(hdl,MAPI_INT,Data[j][k]);
                       break;
                       case BIGINT:
                          ret = mapi_param_type(hdl,MAPI_LONG,Data[j][k]);
                       break;
                       case DECIMAL:
                          ret = mapi_param_type(hdl,MAPI_FLOAT,Data[j][k]);
                       break;
                       case DOUBLE:
                          ret = mapi_param_type(hdl,MAPI_DOUBLE,Data[j][k]);
                       break;
                       case REAL:
                          ret = mapi_param_type(hdl,Data[j][k]);
                       break;
                       case DATE:
                          ret = mapi_param_type(hdl,MAPI_DATE,Data[j][k]);
                       break;
                       default:
                          printf("UnkNow data type %d\n",ColumnDataType[k]);
                   }
          }
          ret=mapi_execute(hdl);
}

我创建了一个数据集,并将其放入二维空指针数组中。当我尝试使用mapi_prepare()和mapi_execute()将所有记录插入monetdb时,以上代码无法按预期工作。仅保留一条记录,即可成功插入。但是,当记录数大于一个时。程序报告

realloc():下一个大小无效
中止(核心已弃用)

任何人都可以在for循环中使用mapi_execute()来遍历所有插入记录。预先感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)