從 DBF 檔是否就可知道其是使用那些欄位當索引 |
缺席
|
thomas0728
中階會員 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: DBASE IV : DBF 第32Byte起(0-31 Bytes 是 File Structure), 之後每 32 bytes (Field descriptor Array 每個 32 bytes), 若 33 byte 是 0DH 則表是最後一個 Field Descriptor. 每個 Field Descriptor 的最後一個 byte 若為 01H 則表示有建 index 在此 Field, 00H 則無 index.不過要去解開這樣的內容, 好像不容易, 另外, 如果dbf的index是 field1 field2的話, 不知在byte上是如何解? 謝謝! |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: P.D. 兄 : 這是光從 DBF File Format Specification 節錄的. 小弟並未真正測試過 Field1 Field2 ... 等, 多 Fields Index 是如何的紀錄於 Field descriptor 應可用 >>< face="Verdana, Arial, Helvetica"> 這或許太難了, 不過上面所談的是DbaseV格式, Dbase在for Win上的結構好像 是有做了大幅度的修正, 我記得沒錯的話, Dbase3的結構檔, 只有記錄這個主體 是否有加入索引鍵(在第28Byte, 01 or 00), 至於鍵值如何, 應該是記錄在 ndx內, 而不在dbf中, 因此要取得indexkey, 個人功力太淺, 因為之前就很想能有 這樣的功能, 因為如果可以取得indexkey內容, 就可以破解這支程式很多的流 程, 這對我大部份接爛攤子的case來說, 助益很大! |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
thomas0728
中階會員 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
各位大大
謝謝大家的回應,我想我說明一下我要這樣做的原因
我有一套 dos 時代寫的人事考勤系統,中央信託局現在在用,裡面大約有一百多個 dbf,刷卡檔的資料約有一百多萬筆,我現在寫一支自動定時備份程式,會把 dbf 裡的資料轉到 ms sql 2000 上,如果一個 dbf 一個寫轉檔,那會寫死,且以後如果新增 dbf 那可也要在加寫,所以我用程式自動重某個目錄底下讀進 *.dbf 的檔案,在用 adodateset 去開啓它,然後判斷有那些欄位及每個欄位的資料型態,在到 sql 上去找有沒有相對的 table,如有有則比對雙方的資料,把新增的資料轉進 sql 裡,但這時一定要知道每個 dbf 的主鍵值是由那些欄位串接而成的,且資料型態是否需要轉換,我現在是在建立一個 table 對照表,勉強可以達成我要的功能,如果能自動判斷 dbf 的主鍵值是由那些組成,那程式就更厲害了,就變成通用的資料轉檔程式,對於交易檔也可以在轉完檔之後清掉某些時段的資料了
------
Thomas Chiou |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 各位大大 謝謝大家的回應,我想我說明一下我要這樣做的原因 我有一套 dos 時代寫的人事考勤系統,中央信託局現在在用,裡面大約有一百多個 dbf,刷卡檔的資料約有一百多萬筆,我現在寫一支自動定時備份程式,會把 dbf 裡的資料轉到 ms sql 2000 上,如果一個 dbf 一個寫轉檔,那會寫死,且以後如果新增 dbf 那可也要在加寫,所以我用程式自動重某個目錄底下讀進 *.dbf 的檔案,在用 adodateset 去開啓它,然後判斷有那些欄位及每個欄位的資料型態,在到 sql 上去找有沒有相對的 table,如有有則比對雙方的資料,把新增的資料轉進 sql 裡,但這時一定要知道每個 dbf 的主鍵值是由那些欄位串接而成的,且資料型態是否需要轉換,我現在是在建立一個 table 對照表,勉強可以達成我要的功能,如果能自動判斷 dbf 的主鍵值是由那些組成,那程式就更厲害了,就變成通用的資料轉檔程式,對於交易檔也可以在轉完檔之後清掉某些時段的資料了 >>< face="Verdana, Arial, Helvetica"> 如果你是要轉入 SQL2000中, 是否有考慮使用業主的SQL中MTS系統, 因為本身它 就是一個轉檔程式, 而且功能十分齊全, 也包含各種資料庫的索引通融性, 或許你可以朝MTS 定時計劃 封裝功能就可以達到你要的功能 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |