トップ回答者
mdbファイルのファイルサイズ増加を抑える為には

質問
-
初めまして。
VB.NETでOracleから読み出したデータをmdbファイルに保存しています。
その際、"INSERT”でデータを追加しているだけにも関わらず、mdbファイルの
ファイルサイズが、予想以上に増加して行きます。
データ保存後、最適化を行えば約1/7程度に小さくなるのですが、最適化をせずに
同程度のサイズに抑える方法は有りませんでしょうか。
Dim cnnAcc As New OleDb.OleDbConnection()
Dim strSQL As String
Dim cmdAcc As New OleDb.OleDbCommand()cmdAcc = cnnAcc.CreateCommand
'月を求める
Dim EndDate As DateTime = "2008/01/01"'Oracleからデータを読込み
strSQL = ""
strSQL &= "SELECT " & vbCrLf
strSQL &= " * " & vbCrLf
strSQL &= "FROM " & vbCrLf
strSQL &= " T_ORC_TABLE " & vbCrLf
strSQL &= "WHERE " & vbCrLf
strSQL &= " DATE >= '" & EndDate.ToString & "' " & vbCrLf
Try
Dim cmd As New OracleCommand
With cmd
.Connection = OraDB.cnn
.CommandText = strSQL
End With
Dim rdr As OracleDataReader = cmd.ExecuteReader'Oracleから読み出したデータをmdbファイルに追加。
Do Until rdr.Read = False
strSQL = ""
strSQL &= "INSERT INTO " & vbCrLf
strSQL &= " T_ACC_TABLE " & vbCrLf
strSQL &= "VALUES ( " & vbCrLf
For i As Int16 = 0 To rdr.FieldCount - 1
strSQL &= " '" & rdr(i) & "' " & vbCrLf
If i < rdr.FieldCount - 1 Then
strSQL &= ","
End If
Next
strSQL &= ") " & vbCrLf
With cmdAcc
.CommandText = strSQL
.CommandType = CommandType.Text
.ExecuteNonQuery()
End WithLoop
Catch e As Exception
End Try
回答
-
Accessはログみたいなもんやら、カリカリと内部的に保存していくので、
肥大化は防げないと思われます。
ファイル保存後に最適化するロジックを埋めて、
動的に最適化するが単純でよいかと。
すべての返信
-
Accessはログみたいなもんやら、カリカリと内部的に保存していくので、
肥大化は防げないと思われます。
ファイル保存後に最適化するロジックを埋めて、
動的に最適化するが単純でよいかと。