ETL应用:使用Pro*C实现文件抽取的方法
/*******************************************
***** 函数功能 :
***** 抽取数据库记录
*****
********************************************/
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实现文件抽取的方法的更多相关文章
- [转]Oracle 10g及pro*c相关问题及解决方法(转)
Oracle 10g及pro*c相关问题及解决方法 2008年08月21日 星期四 上午 11:21 最近一直在进行ORACLE 10g和PRO*C的学习. 其中遇到了不少的问题: 现列于此,已备他用 ...
- linux几种快速清空文件内容的方法
linux几种快速清空文件内容的方法 几种快速清空文件内容的方法: $ : > filename #其中的 : 是一个占位符, 不产生任何输出. $ > filename $ echo & ...
- 在.net中读写config文件的各种方法
阅读目录 开始 config文件 - 自定义配置节点 config文件 - Property config文件 - Element config文件 - CDATA config文件 - Collec ...
- Linux下对比两个文件夹的方法
最近拿到一份源代码,要命的是这份源代码是浅克隆模式的git包,所以无法完整显示里面的修改的内容. 今天花了一点点时间,找了一个在Linux对比两个文件夹的方法. 其实方法很简单,用meld 去对比两个 ...
- zend studio中ctrl+鼠标左键无法转到类或函数定义文件的解决方法
转载自:http://blog.csdn.net/wide288/article/details/21622183 zend studio中ctrl+鼠标左键无法转到类或函数定义文件的解决方法: ze ...
- Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()
Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...
- 使用AS编译jni文件无法编译出arm64-v8a,x86_64和mips64平台的.so文件的解决方法
我用的插件版本是:classpath 'com.android.tools.build:gradle-experimental:0.4.0',AS集成和使用ndk编译项目参考官方demo:https: ...
- Oracle表空间数据文件移动的方法
最近遇到这样的一个问题,Oracle存放表空间文件的盘符 空间不够了,必须把部分表空间迁移出去, [转]http://www.jb51.net/article/77026.htm 实现把用户表空间中的 ...
- 提取c#代码文件中的方法块
此方法是取C#文件里面的方法块,并删除缩进符,感觉写得还是比较容易懂的,所以收藏下,以便将来用到. private static string GetCodeBlock(string allCo ...
随机推荐
- windows下mysql区分大小写敏感问题
默认情况下,表别名在Unix上区分大小写,但在Windows或macOS上不是这样.以下语句在Unix上不起作用,因为它引用别名as a和as A: mysql> SELECT col_name ...
- java 调用cmd命令
public class Port{ public static void main(String[] args) { Runtime runtime=Runtime.getRuntime(); tr ...
- thinkphp 跨模块调用
5.13 跨模块调用 在开发过程中经常会在当前模块调用其他模块的方法,这个时候就涉及到跨模块调用,我们还可以了解到A和R两个快捷方法的使用.例如,我们在Index模块调用User模块的操作方法 c ...
- docker搭建lnmp环境(问题,资料,命令)
入门参考 http://www.runoob.com/docker/docker-install-nginx.html 十大常用命令玩转docker 1. #从官网拉取镜像 docker pull & ...
- CF 617E【莫队求区间异或和】
E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megabytes input s ...
- eval()和exec()函数的区别
(1)eval(str [,globals [,locals ])函数将字符串str当成有效Python表达式来求值,并返回计算结果.(2)exec()函数将字符串str当成有效的Python表达式来 ...
- [JavaScript] this、call和apply详解
在JavaScript编程中,理解this.call和apply是道槛,如果能正确的理解它们的本质及其应用.那么在以后的JavaScript中会得心应手. this 跟别的语言大相径庭的是,JavaS ...
- 学习 NGINX
At a high level, configuring NGINX Plus as a web server is a matter of defining which URLs it handle ...
- redo binlog
w https://dev.mysql.com/doc/refman/5.7/en/innodb-redo-log.html https://dev.mysql.com/doc/refman/5.7/ ...
- php自定义函数: 文件大小转换成智能形式
function format_byte($filesize) { if($filesize >= 1073741824) { $filesize = round($filesize / 107 ...