私は、データベース(Oracle 11g Unicode)テーブルのエクスポートの結果としてXMLファイルを持っています。 このテーブルには、ファイルを表すBLOBフィールドがあります。このファイルは非常に大きなファイルである可能性があります。非常に大きな文字列でバイト配列
私は非常に大きなファイルを持っているので、XMLでそのファイルの非常に大きな文字列表現を取得します。
別のデータベースインスタンスにファイルを挿入するには、この文字列のバイトを取得する必要があります。
この時点では、XMLが課金され、ファイルを表す文字列があります。
私がやったことはこれです:
Encoding.Unicode.GetBytes(stringFileRepresentation);
しかし、私はOutOfMemoryException
を取得しています。
私が行う場合は、この:
Encoding.Unicode.GetBytes(stringFileRepresentation.ToCharArray());
私もOutOfMemoryException
を取得します。
私は、文字列をデコードする前にこれを行うには、あまりにも試してみました:
var chars = stringFileRepresentation.ToCharArray();
Encoding.Unicode.GetBytes(chars);
そしてToCharArray()
を呼び出すときに、私はOutOfMemoryException
を得ます。
だから私は処理のの文字列が問題になると思います。
その後、私は、私は、私は、文字列のエンコーディングをconservateする必要がわからない場合、私はhereイベントを見つけ、次の方法しようとしている:
byte[] bytes = new byte[str.Length * sizeof(char)];
Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
をしかし、私はまた、インスタンス化でOutOfMemoryException
を取得していますbytes
変数。
今、私はOutOfOptions
を実行しました。私は何をすべきか分かりません。
バイト配列を取得した後、どのようにblobをデータベースに書き出しますか?ストリーミングオプションはありますか? (理想的には、文字列としてもファイル全体をメモリに保存する必要はありません...) –
2つのデータベースを直接お互いに話す方法を探してください。 – samjudson
私はODP.NETを見て始めました。私はストリーミングオプションを見ません。これはあなた自身でチャンクに分割し、データベースにフィールドを追加する必要があるようです。現在のフィールドにバイトを追加するSPROCを作成し、オブジェクト全体を挿入するまでチャンクを挿入するループを作成します。 – Wjdavis5