none
mdbファイルのファイルサイズ増加を抑える為には RRS feed

  • 質問

  • 初めまして。

    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 With

            Loop
        Catch e As Exception
        End Try

    2008年7月2日 14:27

回答

すべての返信

  • Accessはログみたいなもんやら、カリカリと内部的に保存していくので、

    肥大化は防げないと思われます。

    ファイル保存後に最適化するロジックを埋めて、

    動的に最適化するが単純でよいかと。

    http://www6.ocn.ne.jp/~sider/vbtech/mdbcompact.htm

    2008年7月4日 10:59
  • こんにちは。中川俊輔 です。

     

    ちょーたさん、回答ありがとうございます。

     

    sanhaoさん、フォーラムのご利用ありがとうございます。

    問題は解決しましたでしょうか?

    有用な情報と思われたため、ちょーたさんの回答へ回答済みチェックをつけさせていただきました。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    有用な情報と思われる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    sanhaoさんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

    2008年7月18日 9:45