0

問題 :

データテーブルには最大1,000万行が含まれる可能性があるため、プロセスを高速化するために、データテーブルをバイナリファイルにバイナリ形式で保存する必要があります。そのため、XML はファイルのサイズが大きくなり、処理が遅くなるため好ましくありません。データテーブルをバイナリファイルに保存できましたが、正常に動作しますが、既存のバイナリファイルに新しい行を追加しようとすると問題が発生します (同じスキーマのデータテーブルを使用して、行データが異なります)、スキーマがコピーされますデータテーブルをバイナリ ファイルに変換するため、ファイルが非常に大きくなります。

必要なもの:

既存のバイナリ ファイルにのみ行を追加できるようにする必要があります。以下のコードを試して 3 回実行すると、バイナリ ファイルが作成され、保存ごとに 5 行追加されます。つまり、15 行保存されます。しかし、そうではありません。テーブル スキーマと 5 行 (バイナリ形式) >>> 次にテーブル スキーマと 5 行 (バイナリ形式) >>> テーブル スキーマと 5 行 (バイナリ形式) を保存します。テーブル スキーマ自体が非常に大きく、多くのファイル サイズを消費します。ファイル スキーマを 1 回だけ保存してから、15 行を保存する必要があります。

私のコード: 関数 GetTable() As DataTable

Dim table As New DataTable ' Create new DataTable instance.

table.Columns.Add("Dosage", GetType(Integer)) ' Create four typed columns in the DataTable.
table.Columns.Add("Drug", GetType(String))
table.Columns.Add("Patient", GetType(String))
table.Columns.Add("Date", GetType(DateTime))
' Add five rows with those columns filled in the DataTable.
table.Rows.Add(25, "Indocin", "David", DateTime.Now)
table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now)
table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now)
table.Rows.Add(21, "Combivent", "Janet", DateTime.Now)
table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now)
Return table
End Function

Private Sub SaveDataTabletoBinary()
dt = GetTable()

Dim format As New Binary.BinaryFormatter
Dim ds As New DataSet
' ds = DataGridView1.DataSource

Using fs As New FileStream("c:\sar1.txt", FileMode.Append)
dt.RemotingFormat = SerializationFormat.Binary

'Other option is SerilaizationFormat.XML 
format.Serialize(fs, ds)
End Using
End Sub

何か案が。?

ありがとう

4

1 に答える 1

0

の拡張子を持つバイナリ ファイルを使用してみてください。.bin

于 2012-05-26T15:05:27.517 に答える