当前位置: 代码迷 >> DB2 >> 嵌入SQL C编程,该如何处理
  详细解决方案

嵌入SQL C编程,该如何处理

热度:1381   发布时间:2013-02-26 00:00:00.0
嵌入SQL C编程
   有一些源文件是文本格式的,每个字段为定长,无分隔符。想要把这些文件导入db2数据库表中。

有没有什么快捷的方法。

   我现在的想法是:
      1. 写一个通用的sqc程序,在一个配置文件中定义好要导入的表名、字段数、每个字段的长度。如
         tblnm1 
         field1_len
         field2_len
         ....
      2. 执行程序时,根据配置文件中的字段数、每个字段长度生成sql语句,插入相应表中

      3. 因为每个表的字段数不一定,假如每个字段最长不超过30、最大200个字段

想定义如下
    EXEC SQL BEGIN DECLARE SECTION;
          char hsDbsNm[20+1];

           long iFldSeq[200];
           char sFldInf[200][30];
    EXEC SQL END   DECLARE SECTION;

但发现整形数组、字符型二维数组好像均不支持

环境 AIX  db2

========================
或是谁有更好的,效率更高的方法。

写成shell也可以,但最好是通用的。

------解决方案--------------------------------------------------------
http://publib.boulder.ibm.com/infocenter/db2luw/v9
关于嵌入式编程 ibm官网信息中心有些样本程序和例子 你看看相关信息把
------解决方案--------------------------------------------------------
用awk把文件加上分隔符,然后用import或者load来处理不行吗?
------解决方案--------------------------------------------------------
既然要做一个那么详细的配置文件,还不如直接把表的信息写成结构体,然后程序中读文件判断是写那个表的数据,然后把文件中的值赋予结构体中,然后insert吧。
我只有这两下子了。。。。
------解决方案--------------------------------------------------------
引用:
既然要做一个那么详细的配置文件,还不如直接把表的信息写成结构体,然后程序中读文件判断是写那个表的数据,然后把文件中的值赋予结构体中,然后insert吧。
我只有这两下子了。。。。


db2load里asc表示固定长度数据,del表示有分隔数据,asc数据可以用method l,需要指定每列的开始和结束位置。

可以根据配置文件(包含表名,字段数,字段长度),另外可以通过数据字典获取表里所有列,
通过编写程序生成一个命令文件,格式如下:
LOAD FROM filename OF ASC METHOD L (col1_start col1_end1,col2_start col2_end,...) INSERT INTO tabname (col1,col2,...);
然后db2 -tvf执行这个命令文件即可
  相关解决方案