大容量数据加载

神通ODBC提供了一套快速的数据加载接口,大容量导入接口是神通数据库扩展的一套快速加载接口,大容量导入的设计采用异步模式,应用程序将数据持续的放到加载缓存中, 如果缓存中的数据超过了设定的提交行数或缓存大小,会自动的将缓存中的数据提交到数据库表中。

大容量功能基于连接句柄开发,调用逻辑如下:

  • 第一步:需要调用SQLImp_init基于连接句柄初始化一个表;
  • 第二步:然后用SQLImp_bind往表的列中添加数据;多个列需要调用多次,且指定不同的列号;
  • 第三步:SQLImp_sendRow结束一行数据的添加,此时如果要加多行数据,跳转到第二步;
  • 第四步:调用SQLImp_done。

示例代码:

int result = SQL_SUCCESS;
      SQLCHAR szTableName[5]="test";
      SQLCHAR col1[5] = "abc";
      SQLINTEGER col1Len = 4;
      SQLCHAR col2[5] = "def";
      SQLINTEGER col2Len = 4;
      SQLINTEGER rowsProcessed = 0; //成功导入的行数
      SQLSMALLINT i = 0, count = 10;
      SQLHSTMT hstmt1 = SQL_NULL_HSTMT;
//数据库连接、句柄创建等

result = SQLExecDirect(hstmt1,(unsigned char*) "create table test(c1 varchar(20) ,c2 varchar(20))",SQL_NTS);
      result = SQLImp_init(hdbc, szTableName, NULL, NULL, IMP_IN, NULL, NULL);
      for(i = 0; i < count; i++)
      {
              result = SQLImp_bind(hdbc, col1, col1Len, SQLIMPVARCHAR, 1);
              result = SQLImp_bind(hdbc, col2, col2Len, SQLIMPVARCHAR, 2);
              result = SQLImp_sendRow(hdbc);
      }
      rowsProcessed = SQLImp_done(hdbc);
      printf("rows Processed = %d\n",rowsProcessed);