2011-08-30 77 views
1

我正在使用由發佈的科學數據組成的文件。我將這個文件與一個讀取前5個空格分隔的數據字段的程序一起使用,並且之後的所有內容都被程序視爲註釋。更好的方式來存儲可更新的科學數據?

2示例行(十萬):

FeII 1608.4511 0.521 55.36 -1300 M03 Journal of Physics 
FeII 1611.23045 0.0321 55.36 1100 01J AJ 

程序把它讀成:

FeII 1608.4511 0.521 55.36 -1300 
FeII 1611.23045 0.0321 55.36 1100 

這些數字是每個測量和大多數(不要讓我開始)有相關的錯誤這些文件中沒有列出。我希望以有用和可更新的方式存儲此信息。也就是說,第一個入口FeII 1608.4511的誤差是正負0.002。考慮何時進行新的測量並將其更改爲:FeII 1608.45034加/減0.0005。我想更新價值,錯誤並記錄關於它的出版物的一些信息。

使用這個文件的程序是遺留代碼,既重要又不靈活:它需要文件看起來像上面的輸出,當它被讀入。我真的很想有一種方法來更新輸入文件在評論中包含值和發佈超鏈接等錯誤。我還想要一種版本控制能力來返回今天這個大文件的狀態;或者在20個更多行更新爲新值之後的5個月內。

有關如何最好地完成此任務的任何建議?我應該將所有內容存儲在某種數據庫中嗎?

+0

你怎麼知道這個新值,FeII 1608.45034±0.0005,應該更新FeII 1608.4511±0.002而不是FeII 1611.23045? –

+0

@Catcall,您正在引起我的擔憂......我可以通過文檔中的上下文線索輕鬆地在文件上手動執行每個更改。但是,如何選擇在數據庫中標記它們?並且有這樣的條目: C I ** 1277.5501 C I ** 1277.7233 - 因此每個更改可能由字母加上接下來的5位數字唯一標識?但是如果我添加需要達到6位數字的新數據呢?如果需要在另一行上更新第六位數字,該怎麼辦? – JBWhitmore

回答

2

數據庫與身份密切相關。如果數據庫無法通過其中的數據識別行,則數據庫不會幫助您。

如果我是你,我首先將基礎文件存儲在版本控制系統中,而不是數據庫。每5個月更改20次,我可能會手動進行這些更改並提交每批更改。 (我不知道什麼可能構成你的批次。可能每次都會發生一次更改)

既然現有文件的格式既重要又脆弱,我不確定是否修改它是個好主意。我想我會更好地將錯誤範圍和發佈超鏈接存儲在一個單獨的文件中,並使用腳本將這些部分放在一起,以便可以使用錯誤範圍和超鏈接的應用程序。

1

一個數據庫聽起來很明智,SQL Server Express是免費的,並廣泛使用。

您可以讀取包含所有註釋的文本文件,並以相同的格式輸出編輯的數據。您可以使用許多前端(包括Access)來進行快速開發,或者使用VB.Net或Excel創建自己的東西。

您需要考慮表格的結構,但它不應該太難,您可以在這裏獲得幫助。

0

爲了更新引入錯誤和鏈接的文件中的信息,您不需要任何數據庫;只要打開文件,遍歷行並更新每一行。

如果您希望能夠恢復線路狀態,則需要定義某種數據庫。例如,您可以在Sql Server或Firebird中創建一個數據庫,併爲每行歷史狀態存儲一行(創建日期爲off course);你的文件本身就是當前值的存儲庫,你可以用日期和簡單的數據庫信息來恢復文件。

如果您不能使用Firebird或SQL Server等數據庫,則可以將歷史數據存儲在一個簡單的文本文件中,這取決於您。請記住,您必須像@CatCall所評論的那樣需要一種識別每行的方法,以便在文件中的行與存儲在存儲庫中的歷史數據之間建立關係。

相關問題