相关疑难解决方法(0)

如何使用c#执行.SQL脚本文件

我确定这个问题已经得到解答,但我无法使用搜索工具找到答案.

使用c#我想运行一个.sql文件.sql文件包含多个sql语句,其中一些语句分为多行.我尝试在文件中读取并尝试使用ODP.NET执行文件...但是我不认为ExecuteNonQuery真的是为了这样做而设计的.

所以我尝试通过生成一个进程来使用sqlplus ...但是除非我将UseShellExecute设置为true而生成进程,否则sqlplus会挂起并永远不会退出.这是不起作用的代码.

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "sqlplus";
p.StartInfo.Arguments = string.Format("xx/xx@{0} @{1}", in_database, s);
p.StartInfo.CreateNoWindow = true;

bool started = p.Start();
p.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

WaitForExit永远不会返回....除非我将UseShellExecute设置为true.UseShellExecute的副作用是您无法捕获重定向的输出.

c# sql oracle scripting

128
推荐指数
6
解决办法
25万
查看次数

执行大型SQL脚本(使用GO命令)

我需要在C#程序中执行大量的SQL语句(创建一堆表,视图和存储过程).

这些语句需要用GO语句分隔,但SqlCommand.ExecuteNonQuery()不喜欢GO语句.我想我将发布以供参考的解决方案是将SQL字符串拆分为GO行,并分别执行每个批处理.

有更简单/更好的方法吗?

c# sql-server

86
推荐指数
5
解决办法
10万
查看次数

如何在.NET中读取大型(1 GB)txt文件?

我有一个1 GB的文本文件,我需要逐行阅读.最好和最快的方法是什么?

private void ReadTxtFile()
{            
    string filePath = string.Empty;
    filePath = openFileDialog1.FileName;
    if (string.IsNullOrEmpty(filePath))
    {
        using (StreamReader sr = new StreamReader(filePath))
        {
            String line;
            while ((line = sr.ReadLine()) != null)
            {
                FormatData(line);                        
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

FormatData()我检查线必须以一个字相匹配,并基于该增量的整数变量的起始字.

void FormatData(string line)
{
    if (line.StartWith(word))
    {
        globalIntVariable++;
    }
}
Run Code Online (Sandbox Code Playgroud)

c#

55
推荐指数
6
解决办法
8万
查看次数

何时使用.NET BufferedStream类?

MSDN网站上指出:

缓冲区是内存中用于缓存数据的字节块,从而减少了对操作系统的调用次数.缓冲区可提高读写性能.缓冲区可用于读取或写入,但不能同时使用.BufferedStream的Read和Write方法自动维护缓冲区.

我应该在每个可能的场合使用这门课吗?

.net performance buffer

52
推荐指数
5
解决办法
3万
查看次数

如何用C#编写超高速文件流代码?

我必须将一个巨大的文件拆分成许多较小的文件.每个目标文件由偏移量和长度定义为字节数.我正在使用以下代码:

private void copy(string srcFile, string dstFile, int offset, int length)
{
    BinaryReader reader = new BinaryReader(File.OpenRead(srcFile));
    reader.BaseStream.Seek(offset, SeekOrigin.Begin);
    byte[] buffer = reader.ReadBytes(length);

    BinaryWriter writer = new BinaryWriter(File.OpenWrite(dstFile));
    writer.Write(buffer);
}
Run Code Online (Sandbox Code Playgroud)

考虑到我必须将此功能调用大约100,000次,因此速度非常慢.

  1. 有没有办法让Writer直接连接到Reader?(也就是说,实际上没有将内容加载到内存中的Buffer中.)

c# cpu streaming performance utilization

39
推荐指数
3
解决办法
9万
查看次数

无缓冲输出非常慢

我使用中概述的方法从数据库生成一个非常大的.csv文件

/sf/answers/941935361/

它工作正常,达到一定程度.当导出的文件太大时,我会得到一个OutOfMemoryException.

如果我通过修改这样的代码来关闭输出缓冲:

protected override void WriteFile(System.Web.HttpResponseBase response)
{
    response.BufferOutput = false; // <--- Added this
    this.Content(response.OutputStream);
}
Run Code Online (Sandbox Code Playgroud)

文件下载完成.但是,它比启用输出缓冲时慢几个数量级(在localhost上测量缓冲为true/false的同一文件).

我知道这样做比较慢,但为什么它会慢慢相对爬行呢?我有什么办法可以提高处理速度吗?

UPDATE

也可以选择使用注释中建议的File(Stream stream,String contentType).但是,我不确定如何创建stream.数据是基于数据库查询动态组合的,而MemoryStream将耗尽连续的物理内存.欢迎提出建议.

更新2

在评论中建议,交替从数据库中读取并写入流会导致性能下降.我修改了代码以在单独的线程中执行流写入(使用生产者/消费者模式).性能没有明显差异.

asp.net-mvc asp.net-mvc-4

11
推荐指数
1
解决办法
3828
查看次数

如何以高效的方式编写1GB文件C#

我有.txt文件(包含超过百万行),大约1GB,我有一个字符串列表,我试图删除字符串列表中存在的文件中的所有行并创建新文件,但它正在采取很长时间.

using (StreamReader reader = new StreamReader(_inputFileName))
{
   using (StreamWriter writer = new StreamWriter(_outputFileName))
   {
     string line;
     while ((line = reader.ReadLine()) != null)
     {
       if (!_lstLineToRemove.Contains(line))
              writer.WriteLine(line);
     }

    }
  }
Run Code Online (Sandbox Code Playgroud)

如何提高代码的性能?

c# performance file

10
推荐指数
1
解决办法
1190
查看次数

如何在加载xml文件期间使用进度条

我想在加载远程xml文件期间显示进度条.我在Visual C#2008 Express Edition中使用Windows应用程序表单.

private void button1_Click(object sender, EventArgs e)
    {
        string text =  textBox1.Text;
        string url = "http://api.bing.net/xml.aspx?AppId=XXX&Query=" + text + "&Sources=Translation&Version=2.2&Market=en-us&Translation.SourceLanguage=en&Translation.TargetLanguage=De";

        XmlDocument xml = new XmlDocument();
        xml.Load(url);

        XmlNodeList node = xml.GetElementsByTagName("tra:TranslatedTerm");

        for (int x = 0; x < node.Count; x++ )
        {
            textBox2.Text = node[x].InnerText;
            progressbar1.Value = x;
        }
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码不能显示进度条加载..请建议我一些代码.提前致谢

c# progress-bar

4
推荐指数
1
解决办法
1万
查看次数

LINQ:大型字符串列表

我正在使用LINQ来解析从csv文件读取的大量字符串列表.我的代码可以正常使用100MB文件.但由于堆栈溢出异常,无法超越它.我正在使用500MB文件测试我的代码,其中列表中的字符串数量约为400万.(500MB csv文件中大约400万行)

    public List<Metrics> MetricsParser(DateTime StartDate, TimeSpan StartTime, DateTime EndDate, TimeSpan EndTime,int dateIndex,int timeIndex)
    {
        DateTime sd = StartDate;
        DateTime ed = EndDate;
        TimeSpan st = StartTime;
        TimeSpan et = EndTime;
        StreamReader streamReader;
        List<string> lines = new List<string>();


        try
        {
            streamReader = new StreamReader("file.csv");
            lines.Clear();
            while (!streamReader.EndOfStream)
                lines.Add(streamReader.ReadLine());
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            if (streamReader != null)
                streamReader.Close();
        }

        IEnumerable<Metrics> parsedFileData = null;
        parsedFileData = from line in lines
                         let log = line.Split(",")
                         where (!(line.StartsWith("#")) …
Run Code Online (Sandbox Code Playgroud)

.net c# linq

4
推荐指数
1
解决办法
1248
查看次数

如何使用 C# 将整个 MongoDB 集合保存到 json/bson 文件?

我有一个流程,首先生成大量数据,并将其保存到 mongoDB 集合中,然后分析数据,最后 - 我想将整个集合保存到磁盘上的文件中,并删除该集合。我知道我可以使用 MongoDump.exe 轻松完成此操作,但我想知道是否有任何方法可以直接从 c# 完成此操作?- 我的意思是不运行控制台进程 - 而是使用 MOngo C# 驱动程序内部的一些功能。

而且,如果可以做到 - 我将如何在 C# 中进行反向操作?- 即:将 .bson 文件加载到集合中?

c# json mongodb bson

4
推荐指数
1
解决办法
6071
查看次数