1
なぜ私は13GB(またはそれ以上)のファイルをデータベースに書きたいのか迷惑をかけないようにしてください。SQLiteに大きなブロブを挿入する
私の問題は、すべてをメモリにロードしていて、それをしたくないと思っています。可能な限り小さなメモリを使用して、ブロブにストリームを流すか、オンザフライでストリームする必要があります。ここ
は、私が現在持っているコードです:
Using fs As New System.IO.FileStream(InPutFile, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read)
Using sr As New System.IO.StreamReader(fs)
Dim data(fs.Length - 1) As Byte
fs.Read(data, 0, fs.Length)
Using cmd As New SQLite.SQLiteCommand(TSQLDB)
data = IO.File.ReadAllBytes(InPutFile)
cmd.CommandText = "UPDATE [FileSpace] SET [FileData][email protected] WHERE [ID]=" & MyID
cmd.Prepare()
cmd.Parameters.Add("@DAT", DbType.Binary, fs.Length)
cmd.Parameters("@DAT").Value = data
cmd.ExecuteNonQuery()
cmd.Dispose()
End Using
data = Nothing
End Using
End Using
任意の助けが最もいただければ幸いです:)ありがとう!
チャンクを取り出し、そのフィールドに既に格納されているデータに追加するストアドプロシージャを作成できますか? – MrGadget
[SQLiteBlobオブジェクト](http://stackoverflow.com/questions/41041820/error-retrieving-blob-field-using-system-data-sqlite-sqlitedatareader-getblob)を使用します。これはブロブのサイズを変更できないことに注意してください。最初に[zeroblob()](http://www.sqlite.org/lang_corefunc.html#zeroblob)でblob値を作成します。 –