zoukankan      html  css  js  c++  java
  • ETL应用:使用Pro*C实现文件抽取的方法

    /*******************************************
    *****  函数功能 :
    *****      抽取数据库记录
    *****
    ********************************************/
    int extract_data(char *efilename,const char *sqlname)
    {
      FILE  *fpWrite;
      EXEC SQL BEGIN DECLARE SECTION;
         varchar     v_str_sql[3000+1];    /*SQL语句  */
         varchar     vc_expcol[MAXLEN];
      EXEC SQL END DECLARE SECTION;
      /**/
      strcpy((char *)v_str_sql.arr,sqlname);
      v_str_sql.len=strlen((char*)v_str_sql.arr);
    #ifdef   DEBUG
      printf("SQL语句%s.
    ",v_str_sql.arr);
    #endif
      EXEC SQL WHENEVER SQLERROR GOTO prepare_exp_error;
            if ((fpWrite = fopen(efilename, "w+")) == NULL)
       {
                fprintf(stderr,"Cannot open data file %s
    ", efilename);
                      exit(1);
       }
       /*声明游标处理方式*/
          EXEC SQL PREPARE sqlstmt FROM :v_str_sql;
          EXEC SQL DECLARE extract_cur CURSOR FOR sqlstmt;
          EXEC SQL OPEN extract_cur;
       for(;;)
      {
              /*提取数据*/
          EXEC SQL FETCH extract_cur INTO :vc_expcol ;
          if (sqlca.sqlcode == 1403)
                       {
                           fprintf(stderr,"数据已经抽取完成或是没有符合条件的数据!
    ");
                           break;
                        }
                       vc_expcol.arr[vc_expcol.len] = '';
                       /*将输出数据记录到文件中*/
           fprintf(fpWrite,"%s
    ",vc_expcol.arr );
       }
       /*关闭文件*/
       fclose(fpWrite);
       /*关闭游标*/
       EXEC SQL CLOSE extract_cur;
       return SUCCESS;
    prepare_exp_error:
             /*记录错误信息*/
       fprintf(stderr,"
    %70s
    ",sqlca.sqlerrm.sqlerrmc);
       fprintf(stderr,"数据库操作错误!退出!");
             return FAILUER;
    }
  • 相关阅读:
    快速创建一个 Servlet 项目(1)
    快速创建一个 Servlet 项目(2)
    多级派生情况下派生类的构造函数
    最近看了点C++,分享一下我的进度吧!
    进程同步&进程间通信
    multiprocess模块
    进程
    网络编程之socket
    网络通信原理
    网络通信的流程 | 初始socket
  • 原文地址:https://www.cnblogs.com/tychyg/p/4868561.html
Copyright © 2011-2022 走看看