Ho un file XML che risulta dall'esportazione di una tabella di database (Oracle 11g Unicode). Questa tabella ha un campo BLOB che rappresenta un file. Il file potrebbe essere molto grande.Stringa molto grande nella matrice di byte
Quindi nel caso in cui disponga di un file molto grande, ottenere nell'XML una rappresentazione di stringa molto grande di quel file.
Devo ottenere i byte di questa stringa per inserire il file in un'altra istanza di database.
A questo punto l'XML viene addebitato e ho quindi una stringa che rappresenta il file.
Quello che ho fatto è questo:
Encoding.Unicode.GetBytes(stringFileRepresentation);
Ma sto ottenendo un OutOfMemoryException
.
Se faccio questo:
Encoding.Unicode.GetBytes(stringFileRepresentation.ToCharArray());
ottengo anche un OutOfMemoryException
.
ho cercato anche di fare questo prima di decodifica la stringa:
var chars = stringFileRepresentation.ToCharArray();
Encoding.Unicode.GetBytes(chars);
E ricevendo il OutOfMemoryException
quando si chiama ToCharArray()
.
Quindi immagino sia un problema quando elaborazione la stringa.
Poi sto cercando il seguente metodo che ho trovato here evento se non sono sicuro che devo conservate la codifica della stringa:
byte[] bytes = new byte[str.Length * sizeof(char)];
Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
Ma sto ricevendo anche un OutOfMemoryException
in un'istanza la variabile bytes
.
Ora, ho eseguito OutOfOptions
e non so cosa fare.
Come si scrive il blob nel database dopo aver ottenuto l'array di byte? C'è un'opzione streaming? (Idealmente, non dovrebbe essere necessario avere l'intero file in memoria come una stringa ...) –
In alternativa, trovare un modo per far dialogare i due database direttamente. – samjudson
Ho iniziato a guardare ODP.NET e non vedo un'opzione di streaming. Sembra quasi che dovrai dividerlo in blocchi da solo e aggiungere semplicemente il campo nel database. Magari scrivi un SPROC che aggiungerà i byte al campo corrente e chiamerà il loop inserendo blocchi finché non avrai inserito l'intero oggetto – Wjdavis5