簡體   English   中英

序列化數據表以供以后重用

[英]serializing a datatable for later reuse

我有一個填充的DataTable,我想序列化為文件以備后用。 我一直在尋找與此有關的選項,想知道是否有人可以指出我正確的方向。

我將創建兩種方法:一種用於將數據表寫入文件,另一種用於使用文件作為輸入來創建新數據表。 使用WriteXML()和Load()方法執行此操作是否有意義,如果是,則應重點關注哪些標志? 感謝您的指導。

如果有幫助,我正在使用.Net 2.0。

我認為Silveira 注釋意味着使用二進制序列化。 它與XML相比非常快,而串行化與二進制相比非常慢,特別是對於大量數據而言。 而且與XML相比,它在磁盤上占用的空間要少得多。

    public static void Serialize(DataSet ds, Stream stream) {
        BinaryFormatter serializer = new BinaryFormatter();
        serializer.Serialize(stream, ds);
    }

    public static DataSet Deserialize(Stream stream) {
        BinaryFormatter serializer = new BinaryFormatter();
        return (DataSet)serializer.Deserialize(stream);
    } 

我會去讀/寫xml方法。 我們已經廣泛使用了。 它快速,簡單,內置在框架中。

很重要的一點 :
如果您嘗試使用二進制格式化程序序列化DataTable對象或DataSet對象,您仍然會得到一個二進制文件,但這是一個相當大的文件,因為其中充滿了大量的XML數據。 不幸的是,二進制文件中的XML數據導致大型文件缺乏XML提供的可移植性和可讀性優勢。 隨后,反序列化此類文件可能需要幾秒鍾才能完成,最終占用的內存要比實際需要的多得多。 結果,如果由於需要獲得更緊湊的輸出而選擇ADO.NET對象的二進制序列化, 則會失敗 二進制序列化仍然是最節省空間的方法,但是對於ADO.NET對象,它並沒有達到應有的效果。

有關完整的參考,請閱讀以下文章:
http://msdn.microsoft.com/zh-CN/magazine/cc188907.aspx

您可能會使用將數據庫序列化為帶有標頭的CSV文件的基本技術。 一些數據庫管理系統支持從此類文件輕松加載數據。 如果您的dbms沒有,編寫一些可以幫助您的代碼也不會太困難。 這是否回答你的問題?

在我看來,xml的缺點是它可能包含比實際數據更多的元數據。 如果是csv文件,則不重復元數據。

數據表是內存中的對象嗎? 如果是這樣,您只需使用序列化和反序列化方法即可。 它們相對較快,您可以在任何需要的地方保持結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM