Oracle的documentation有關於如何在Java中插入大BLOB的示例。是否有可能在C#中做同樣的事情?將大BLOB插入到Oracle數據庫中
回答
與流一個答案:
string path = @"D:\testfile.txt";
System.IO.FileStream myStream = new System.IO.FileStream(@path, FileMode.Open);
BinaryReader binaryReader = new BinaryReader(myStream);
byte[] data = binaryReader.ReadBytes((int)myStream.Length); //read the stream into byte
String sql = "INSERT INTO testblob (testid, testblob) VALUES (100, :blobtodb)";
OracleCommand cmd = new OracleCommand();
cmd.CommandText = sql; // Set the sql-command
cmd.Connection = con; //con is an OracleConnection, create it before
OracleParameter param = cmd.Parameters.Add("blobtodb", OracleDbType.Blob); //Add the parameter for the blobcolumn
param.Direction = ParameterDirection.Input;
param.Value = data; //Asign the Byte Array to the parameter
cmd.ExecuteNonQuery(); //You are done!
這應該與每一個流工作;)
有關文件(超過)1TB:
警告:使用大文件的有機磷農藥的解決方案,因爲它是真的很難有1TB內存;)
老實說,我不知道,我不能這麼大的文件,在這裏嘗試。然而BLOB
s是specified by Oracle與:Maximum size: (4 GB - 1) * DB_BLOCK_SIZE initialization parameter (8 TB to 128 TB)
。所以從數據庫端它應該工作。 但是你MAYBE需要注意Connection Timeout
和Connection Lifetime
,因爲在網絡上傳輸這樣一個大文件需要很長時間(我猜,我不知道你的設置)。
是,設置你的參數了,像這樣:
var param = cmd.Parameters.Add("blobInParam", OracleDbType.Blob);
param.Direction = ParameterDirection.Input;
// Assign Byte Array to Oracle Parameter
param.Value = blobData;
而我的腦海裏,字節必須是偶數,對不對? *只是添加,也許值得去了解* – DatRid 2014-10-01 15:42:21
不能誠實地說,我見過這種限制;但這並不意味着它不在那裏! – 2014-10-01 15:45:34
如何設置二進制流到blob,如OutputStream outstream = blob.setBinaryStream(1L); ? – 2014-10-01 16:13:37
- 1. 如何使用Vert.x將Blob插入到Oracle數據庫11g中?
- 2. 將CLOB插入到Oracle數據庫中
- 3. 將圖像插入到BLOB中Oracle 10g
- 4. 插入到oracle數據庫
- 5. BLOB,插入SQL數據庫
- 6. 如何使用System.Data.OracleClient將大塊Blob插入到Oracle 10G中?
- 7. Oracle數據庫BLOB到Java中的InputStream?
- 8. 用C語言在oracle數據庫中插入blob#
- 9. 如何將數據從JTextfield插入到Oracle數據庫中?
- 10. 將數據插入到Oracle數據庫中
- 11. sqlite - 插入數據到blob
- 12. 將數據插入到Oracle中
- 13. 插入Oracle數據庫
- 14. 插入時間戳到Oracle數據庫
- 15. 插入日期到oracle數據庫
- 16. 插入查詢到Oracle數據庫
- 17. 將大量Excel數據插入到MySQL數據庫中
- 18. 將大量原始數據插入到數據庫中PHP
- 19. Phonegap將照片和插入圖像(BLOB)到數據庫SQLite
- 20. 如何將阿拉伯文字插入到oracle數據庫中?
- 21. 如何將BLOB_FILE插入到Oracle數據庫中?
- 22. Java:如何將CLOB插入到oracle數據庫中
- 23. 如何將圖片或圖片插入到oracle數據庫中?
- 24. 如何將mysql_real_escape_string()的結果插入到oracle數據庫中?
- 25. 使用Java將記錄插入到Oracle數據庫中
- 26. 從數據庫插入圖像(BLOB)Echo
- 27. 將數據「BLOB」類型從一個數據庫導入到另一個數據庫中oracle
- 28. 將大量數據插入到Redshift中
- 29. 試圖在cassandra數據庫中將blob插入image/xml文件
- 30. Oracle查詢插入空Blob
可以用1TB文件嗎? – 2014-10-02 16:38:06
@OtávioDécio查看我的更新回答。 – DatRid 2014-10-06 09:07:39
其實我想我找到了我在找的東西 - 你需要創建一個OracleBlob,將你的大內容流入它(Oracle將它流入數據庫),然後將OracleBlob作爲參數分配給連接,在此時它實際上寫到表 – 2014-10-06 13:48:07