我有以下代码来运行SQL文件。
string scriptDirectory = "...";
string sqlConnectionString = "...";
DirectoryInfo di = new DirectoryInfo(scriptDirectory);
FileInfo[] rgFiles = di.GetFiles("*.sql");
foreach (FileInfo fi in rgFiles)
{
//StringCollection sc = new StringCollection();
FileInfo fileInfo = new FileInfo(fi.FullName);
string script = fileInfo.OpenText().ReadToEnd();
SqlConnection connection = new SqlConnection(sqlConnectionString);
Server server = new Server(new ServerConnection(connection));
server.ConnectionContext.ExecuteNonQuery(script);
}
但问题是当任何文件非常大时。
解决方案将包含StringCollection
中的所有命令,但问题是要划分脚本。
是否有一些方法来拆分SQL文件?
按GO
分割文件不是解决方案,因为文件创建了表和“INSERT”,插入之间没有GO
。
修改
为了更清楚,这是想要读取大文件的例外:
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was
thrown.
at System.Text.StringBuilder.ToString()
at System.IO.StreamReader.ReadToEnd()
at ConsoleApplication2.Program.Main(String[] args) in Program.cs:line 47
我可以逐行读取并分离文件以找到“GO”或“INSERT / DELETE / UPDATE”,但我需要知道是否存在任何工具或SQL库来执行此操作。