我有一個XML文件,這是從數據庫(Oracle 11g Unicode)表導出的。 該表具有代表文件的BLOB字段。該文件可能是一個非常大的文件。非常大的字符串到字節數組
因此,在我有一個非常大的文件的情況下,在XML中獲取該文件的非常大的字符串表示形式。
我必須獲取此字符串的字節才能將該文件插入另一個數據庫實例中。
這一點XML是收費的,然後我有一個字符串表示文件。
我所做的是這樣的:
Encoding.Unicode.GetBytes(stringFileRepresentation);
但我發現了一個OutOfMemoryException
。
如果我這樣做:
Encoding.Unicode.GetBytes(stringFileRepresentation.ToCharArray());
我得到也是一個OutOfMemoryException
。
我嘗試過的字符串解碼之前做到這一點:
var chars = stringFileRepresentation.ToCharArray();
Encoding.Unicode.GetBytes(chars);
我得到OutOfMemoryException
調用ToCharArray()
時。
所以我猜是加工時出現問題的字符串。
然後我嘗試以下方法,我發現here事件,如果我不知道我有conservate的字符串編碼:
byte[] bytes = new byte[str.Length * sizeof(char)];
Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
但我也得到一個OutOfMemoryException
的實例變量爲bytes
。
現在,我跑了OutOfOptions
,我不知道該怎麼辦。
如何在獲取字節數組後將數據塊寫入數據庫?是否有流媒體選項? (理想情況下,您不需要將整個文件作爲字符串存儲在內存中) –
或者找出一種方法讓兩個數據庫直接對話。 – samjudson
我開始看ODP.NET,我沒有看到流式選項。它幾乎看起來像你需要自己把它分成塊,並簡單地追加數據庫中的字段。也許寫一個SPROC,將字節追加到當前字段,並循環調用它插入塊,直到您插入整個對象 – Wjdavis5