/*******************************************
***** 函数功能 :
***** 抽取数据库记录
*****
********************************************/
int extract_data(char *efilename,const char *sqlname)
{
FILE *fpWrite;
EXEC SQL BEGIN DECLARE SECTION;
varchar v_str_sql[+]; /*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.\n",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\n", efilename);
exit();
}
/*声明游标处理方式*/
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 == )
{
fprintf(stderr,"数据已经抽取完成或是没有符合条件的数据!\n");
break;
}
vc_expcol.arr[vc_expcol.len] = '\0';
/*将输出数据记录到文件中*/
fprintf(fpWrite,"%s\n",vc_expcol.arr );
}
/*关闭文件*/
fclose(fpWrite);
/*关闭游标*/
EXEC SQL CLOSE extract_cur;
return SUCCESS;
prepare_exp_error:
/*记录错误信息*/
fprintf(stderr,"\n%70s\n",sqlca.sqlerrm.sqlerrmc);
fprintf(stderr,"数据库操作错误!退出!");
return FAILUER;
}

ETL应用:使用Pro*C实现文件抽取的方法的更多相关文章

  1. [转]Oracle 10g及pro*c相关问题及解决方法(转)

    Oracle 10g及pro*c相关问题及解决方法 2008年08月21日 星期四 上午 11:21 最近一直在进行ORACLE 10g和PRO*C的学习. 其中遇到了不少的问题: 现列于此,已备他用 ...

  2. linux几种快速清空文件内容的方法

    linux几种快速清空文件内容的方法 几种快速清空文件内容的方法: $ : > filename #其中的 : 是一个占位符, 不产生任何输出. $ > filename $ echo & ...

  3. 在.net中读写config文件的各种方法

    阅读目录 开始 config文件 - 自定义配置节点 config文件 - Property config文件 - Element config文件 - CDATA config文件 - Collec ...

  4. Linux下对比两个文件夹的方法

    最近拿到一份源代码,要命的是这份源代码是浅克隆模式的git包,所以无法完整显示里面的修改的内容. 今天花了一点点时间,找了一个在Linux对比两个文件夹的方法. 其实方法很简单,用meld 去对比两个 ...

  5. zend studio中ctrl+鼠标左键无法转到类或函数定义文件的解决方法

    转载自:http://blog.csdn.net/wide288/article/details/21622183 zend studio中ctrl+鼠标左键无法转到类或函数定义文件的解决方法: ze ...

  6. Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()

    Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...

  7. 使用AS编译jni文件无法编译出arm64-v8a,x86_64和mips64平台的.so文件的解决方法

    我用的插件版本是:classpath 'com.android.tools.build:gradle-experimental:0.4.0',AS集成和使用ndk编译项目参考官方demo:https: ...

  8. Oracle表空间数据文件移动的方法

    最近遇到这样的一个问题,Oracle存放表空间文件的盘符 空间不够了,必须把部分表空间迁移出去, [转]http://www.jb51.net/article/77026.htm 实现把用户表空间中的 ...

  9. 提取c#代码文件中的方法块

       此方法是取C#文件里面的方法块,并删除缩进符,感觉写得还是比较容易懂的,所以收藏下,以便将来用到. private static string GetCodeBlock(string allCo ...

随机推荐

  1. windows下mysql区分大小写敏感问题

    默认情况下,表别名在Unix上区分大小写,但在Windows或macOS上不是这样.以下语句在Unix上不起作用,因为它引用别名as a和as A: mysql> SELECT col_name ...

  2. java 调用cmd命令

    public class Port{ public static void main(String[] args) { Runtime runtime=Runtime.getRuntime(); tr ...

  3. thinkphp 跨模块调用

    5.13 跨模块调用   在开发过程中经常会在当前模块调用其他模块的方法,这个时候就涉及到跨模块调用,我们还可以了解到A和R两个快捷方法的使用.例如,我们在Index模块调用User模块的操作方法 c ...

  4. docker搭建lnmp环境(问题,资料,命令)

    入门参考 http://www.runoob.com/docker/docker-install-nginx.html 十大常用命令玩转docker 1. #从官网拉取镜像 docker pull & ...

  5. CF 617E【莫队求区间异或和】

    E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megabytes input s ...

  6. eval()和exec()函数的区别

    (1)eval(str [,globals [,locals ])函数将字符串str当成有效Python表达式来求值,并返回计算结果.(2)exec()函数将字符串str当成有效的Python表达式来 ...

  7. [JavaScript] this、call和apply详解

    在JavaScript编程中,理解this.call和apply是道槛,如果能正确的理解它们的本质及其应用.那么在以后的JavaScript中会得心应手. this 跟别的语言大相径庭的是,JavaS ...

  8. 学习 NGINX

    At a high level, configuring NGINX Plus as a web server is a matter of defining which URLs it handle ...

  9. redo binlog

    w https://dev.mysql.com/doc/refman/5.7/en/innodb-redo-log.html https://dev.mysql.com/doc/refman/5.7/ ...

  10. php自定义函数: 文件大小转换成智能形式

    function format_byte($filesize) { if($filesize >= 1073741824) { $filesize = round($filesize / 107 ...