亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用C++產生QL*Loader各類文件

2019-11-17 05:29:57
字體:
來源:轉載
供稿:網友

  ----1.前言

----目前,我國許多單位MIS系統建立在微機PC或基于NovellNetWare局域網環境中,數據庫和開發工具采用FoXPRo2.5 for DOS或Foxpro 2.5 for Windows,以dbf文件為數據組織治理手段,隨著系統的不斷擴大和實際應用的需要,不少單位已開始采用大型數據庫Oracle。在MIS從Foxpro升級到大型數據庫Oracle過程中,將Foxpro的dbf文件通過Oracle工具SQL*Loader加載到Oracle數據庫中是一項非常重要的工作。一般用SQL*Loader加載的具體實施步驟是:

----* 運行Foxpro,打開數據庫,將dbf文件拷貝為SDF格式的文本文件

----* 根據dbf文件結構,產生建立Oracle表(CREATETABLE)的SQL語句

----* 登錄Oracle,運行產生Oracle表(CREATETABLE)的SQL語句

----* 根據dbf文件結構,產生SQL*Loader的控制文件

----* 運行SQL*Loader,加載數據

----用手工方法產生CREATETABLE的SQL語句,非凡是產生SQL*Loader控制文件時,POS99vION起始、結束位置經常弄錯,當需要加載大量的數據時,

不但煩瑣,而且效率比較低。我們在實踐中利用BorlandC++5.0編制了一個C++實用程序load.cpp,自動產生SQL*Loader的數據文件、控制文件和產

生CREATETABLE的SQL語句。運用load,我們只需:

----* load<數據庫名>

----* 登錄Oracle,運行產生Oracle表(CREATETABLE)的SQL語句

----* 運行SQL*Loader,加載數據

----在實踐中,我們通過這種方法,在實現從Foxpro到OracleforDigitalUNIX+中文Windows95的client/server平臺的數據加載過程中提高了效率。

----2.Foxpro中dbf文件結構

----dbf文件由文件頭和文件記錄組成,其中文件頭又由數據庫說明和字段說明組成。數據庫說明由32個字節組成,各字節含義如下:

字節    含義   
0      數據庫文件標志有無備注型字段(03H無)
1-3    最后一次修改日期
4-7    文件記錄數
8-9    文件頭長度
10-11  記錄長度
12-31  未用


----字段說明由若干個32字節組成,每32字節說明一個字段,各字節含義如下:

字節    含義
0-10    字段名
11      字段類型
12-15   該字段在文件首記錄中的地址
16      字段長度
17      小數位數
18-31   未用

----文件記錄以ASCII形式存儲,每條記錄以空格(20H)開頭,該空格用來作刪除標志用。

----三

----【注】:

----* 不考慮完整性約束,同時對于TABLESPACE及STORAGE存儲參數取缺省值。

----* 對于數字型字段,n表示數字的寬度,在Foxpro中包含小數點位置,而在Oracle中不包含。

----* 對于Foxprological型字段類型,由于Oracle中沒有相應的邏輯型變量,故將其轉換為字符類型。

----* 暫且不考慮memo、general、picture字段的轉換。

----4.SQL*Loader控制文件的建立

----控制文件為SQL*Loader的核心文件,與Foxpro字段對應關系為表四:Foxpro數據類型

----控制文件語句對應的格式

Character(n)
CHAR
Number(n,m)
Float(n,m)
DECIMAL EXTERNAL NULLIF < field > = BLANKS  (m< >0)


INTEGER EXTERNAL NULLIF < field > = BLANKS   ( m=0)
Logical
CHAR
DATE
DATE  "YYYYMMDD"  NULLIF < field > = BLANKS

---- 四

---- 以 下 是 用Borland C++ 5.0 在 中 文Windows 95 下 編 制 的 產 生CREATE TABLE SQL 語 句 和 產 生SQL*Loader 數 據 文 件、 控 制

文 件 的 源 程 序load.cpp。

#include < stdio.h >
#include < stdlib.h >
#include < iostream.h >
#include < fstream.h >
#include < string.h >
#include < math.h >
#define MAX_ROW_LENGTH 1200
#define MAX_FIELD_NUMBER 30
typedef strUCt head         // dbf頭文件結構
{ unsigned char mask ;
  unsigned char date[3] ;
  unsigned long record_num;
  unsigned short int head_length;
  unsigned short int field_length ;
} HEAD ;

typedef struct field         // dbf字段結構
{ unsigned char name[11];
  unsigned char type ;
  unsigned long  add;
  unsigned char length;
  unsigned char dec ;
} FIELD ;

int main(int argc,char **argv)
{ char buf[MAX_ROW_LENGTH],dbf[40],*sqlload;
  unsigned int i,field_num;
  HEAD  *dbfhead ;
  FIELD dbffield[MAX_FIELD_NUMBER];
  FILE *fout, *fp;

  if (argc!=2)
  { cout < < "Usage : load dbfile" < < endl ;
    return -1;
  }

  sqlload = new char(40);
  dbfhead = new HEAD;
  strcpy(buf,"");

  strcpy(dbf,argv[1]);
  strcat(dbf,".dbf");
  if ((fp=fopen(dbf,"rb")) == NULL)
  { cout < < "Cannot open file " < < dbf < < endl;
    return -1 ;
  }
  fseek(fp,0,SEEK_SET);
  fread(dbfhead,sizeof(HEAD),1,fp);     // 讀dbf頭文件信息

  field_num = (dbfhead- >head_length-1)/32 -1 ;      //字段個數

  for( i=0; i< field_num; i++)
  { fseek(fp,32*(i+1),SEEK_SET);
    fread(&dbffield[i],sizeof(FIELD),1,fp);  // 讀dbf結構信息
  }
// 產 生SQL*Loader 控 制 文 件

  strcpy(sqlload,argv[1]);
  strcat(sqlload,".ctl");
  if ((fout=fopen(sqlload,"w")) == NULL)
  { cout < < "Cannot open file " < < sqlload < < endl;
    return -1 ;
  }
  fprintf(fout,"LOAD DATA/n");
  fprintf(fout,"INFILE '%s.txt'/n", argv[1]);
  fprintf(fout,"INTO TABLE %s (/n", argv[1]);

  for(i=0;i< field_num;++i)
  { fprintf(fout, "%11s  POS99vION(%d:%d)", dbffield[i].name,
   dbffield[i].add, dbffield[i].add + dbffield[i].length -1 );
    switch (dbffield[i].type)
    { case 'C':
      case 'L':                            // 字符型/ 邏輯型
        fprintf(fout, "  CHAR");
        break ;
      case 'N':
        if (dbffield[i].dec == 0 )         //整數型
          fprintf(fout, "INTEGER EXTERNAL NULLIF %s = BLANKS",
            dbffield[i].name);
        else                       &

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成人av在线| 久久99视频精品| 尤物yw午夜国产精品视频| 欧美三级免费观看| 久久久久国产一区二区三区| 日韩精品福利网站| 高潮白浆女日韩av免费看| 成人在线国产精品| 久久免费视频网站| 久久久久日韩精品久久久男男| 久热精品在线视频| 一二美女精品欧洲| 国产精品自产拍在线观看| 国产精品视频最多的网站| 亚洲成年网站在线观看| 秋霞成人午夜鲁丝一区二区三区| 亚洲欧美国产精品专区久久| 国产精品成人免费电影| 国产一区二区av| 国产日韩欧美综合| 久久精品人人爽| 久久久久久97| 国产精品99久久久久久久久| 亚洲3p在线观看| 国产精品美女av| 色与欲影视天天看综合网| 欧美高清视频一区二区| 欧美一区二区大胆人体摄影专业网站| 色噜噜亚洲精品中文字幕| 91大神在线播放精品| 精品精品国产国产自在线| 日韩精品在线电影| 亚洲性av网站| 国产精品一区二区在线| 国产精品视频网站| 国产精品日韩欧美| 欧美激情精品久久久久| www.欧美视频| 亚洲精品videossex少妇| 欧美日韩在线免费| 欧美激情综合亚洲一二区| 国内精品小视频| 亚洲欧美激情一区| 日本久久久久久| 久久成人精品一区二区三区| 日本不卡视频在线播放| 日韩精品欧美国产精品忘忧草| 国产精品久久91| 97超碰国产精品女人人人爽| 欧美亚洲国产另类| 性色av香蕉一区二区| 奇米四色中文综合久久| 成人a视频在线观看| 亚洲一区二区三区sesese| 欧美一级bbbbb性bbbb喷潮片| 性欧美亚洲xxxx乳在线观看| 中文字幕av一区二区| 欧美一级电影免费在线观看| 精品视频中文字幕| 色噜噜国产精品视频一区二区| 色久欧美在线视频观看| 欧美一区在线直播| 91中文在线观看| 亚洲精品福利在线| 欧美日韩第一视频| 久久久人成影片一区二区三区观看| 欧美最猛黑人xxxx黑人猛叫黄| 国产亚洲欧洲在线| 日韩精品在线免费观看视频| 亚洲精品欧美一区二区三区| 欧美日韩一区二区三区在线免费观看| 成人免费福利在线| 91精品国产九九九久久久亚洲| 国产精品99久久久久久白浆小说| 亚洲一二在线观看| 欧美另类老肥妇| 国产精品av免费在线观看| 国产欧美一区二区三区在线看| 欧美高清一级大片| 亚洲91精品在线| 久久视频精品在线| 中日韩美女免费视频网址在线观看| 国产精品精品久久久久久| 成人免费视频97| 亚洲春色另类小说| 日韩av一区在线观看| 欧美大片第1页| 日韩成人网免费视频| 亚洲欧洲中文天堂| 91成人天堂久久成人| 国产视频自拍一区| 欧美日韩激情视频| 亚洲国产精品悠悠久久琪琪| 久久久噜噜噜久噜久久| 亚州av一区二区| 成人写真视频福利网| 亚洲天堂男人天堂女人天堂| 欧美一级淫片aaaaaaa视频| 成人a在线观看| 国产日韩一区在线| 国语自产精品视频在免费| 国产精品青草久久久久福利99| 亚洲激情在线视频| 国产剧情久久久久久| 青草青草久热精品视频在线网站| 国产视频久久久久| 欧美一区二区影院| 亚洲а∨天堂久久精品9966| 成人国产在线视频| 久久亚洲欧美日韩精品专区| 成人精品网站在线观看| 成人性生交xxxxx网站| 国产一区二区黄| 国产精品电影在线观看| 91午夜在线播放| 91精品国产综合久久香蕉最新版| 91精品在线观看视频| 中文字幕日韩欧美精品在线观看| 日韩精品在线观看网站| 欧美久久久精品| 欧美亚洲成人精品| 岛国视频午夜一区免费在线观看| 欧美性色xo影院| 色综合久综合久久综合久鬼88| 一本色道久久88综合亚洲精品ⅰ| 日韩美女在线看| 亚洲在线视频福利| 欧美激情亚洲精品| 欧美视频精品一区| 亚洲精品日韩在线| 爽爽爽爽爽爽爽成人免费观看| 亚洲成人黄色网址| 国产精品视频中文字幕91| 911国产网站尤物在线观看| 欧美高清视频在线观看| 久久激情五月丁香伊人| 欧美精品激情blacked18| 国产精品都在这里| 国产小视频91| 成人高清视频观看www| 国产欧美日韩91| 国产精品久久久久久久久久久久久| xx视频.9999.com| 亚洲久久久久久久久久久| 亚洲香蕉伊综合在人在线视看| 中文字幕欧美精品日韩中文字幕| 国产视频精品一区二区三区| 国产精品黄视频| 日韩在线观看免费高清| 91精品国产免费久久久久久| 日韩精品久久久久久福利| yw.139尤物在线精品视频| xxx欧美精品| 欧美成人精品一区二区| 国产精品成久久久久三级| 欧美视频中文字幕在线| 97国产suv精品一区二区62| 国产精品成人观看视频国产奇米| 日韩在线资源网| 欧美巨大黑人极品精男| 在线日韩欧美视频| 日韩一区在线视频| 91精品国产成人www| 久久香蕉国产线看观看网|