私は大規模なSQLスクリプト(約70MB)を持っており、すべてをメモリに読み込んだ後にGO文を分割する必要があります。File.ReadAllText OutOfMemoryException
私は次のことをやってますが、OutOfMemoryException
を取得しています:
var script = File.ReadAllText(scriptFile);
var scriptName = Path.GetFileName(scriptFile);
var commands = Regex.Split(script, "^GO\r\n", RegexOptions.Multiline | RegexOptions.IgnoreCase);
その後、commands
内の各スクリプトフラグメントのために、私はExecuteNonQuery
を呼びます。この大きなスクリプトファイルをロードしようとするまで、これはすべて正常に動作します。
このテキストファイルをより効率的に解析するための提案はありますか?
これを行単位で読み込んでリストに追加するだけで、 "GO"を押すと、現在のバッチを処理してから次の行に移動する必要があります。 –
単純にファイル全体を読み込むのではなく、[this](http://weblogs.asp.net/jongalloway/Handling-_2200_GO_2200_-Separators-in-SQL-Scripts-_2D00_-the-easyway)を読むことができます。すべてのあなたの記憶を使い切ります。 – juharr
@juharr私は昨日それを実際に読んだ。 –