Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中DB文件的海量数据提取#_C#_Sql_Insert_Mdf - Fatal编程技术网

C# C语言中DB文件的海量数据提取#

C# C语言中DB文件的海量数据提取#,c#,sql,insert,mdf,C#,Sql,Insert,Mdf,我有大量的数据,比如在记事本文件中有4500万行数据, 我把那个巨大的文件分成了几个小文件, 我的数据如下: ('1','dsamp','tty','tmp'....) and so on 现在我正在一个接一个地读取这些文件,并使用插入脚本和一段C#代码将它们写入一个.mdf文件,但当我遇到一些错误时,我无法找到错误所在,我希望从开始开始并从第0行插入。 有没有最好的方法、代码或工具来做到这一点 我的代码如下所示 private void Form1_Load(object send

我有大量的数据,比如在记事本文件中有4500万行数据,
我把那个巨大的文件分成了几个小文件,
我的数据如下:

('1','dsamp','tty','tmp'....)
and so on
现在我正在一个接一个地读取这些文件,并使用插入脚本和一段C#代码将它们写入一个.mdf文件,但当我遇到一些错误时,我无法找到错误所在,我希望从开始开始并从第0行插入。
有没有最好的方法、代码或工具来做到这一点 我的代码如下所示

    private void Form1_Load(object sender, EventArgs e)
    {
        int i = 0;
        try
        {
            string const_state = "INSERT INTO Authors1 VALUES";
            string conn = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\users\srikanth\documents\visual studio 2013\Projects\WindowsFormsApplication1\WindowsFormsApplication1\SampleDB.mdf;Integrated Security=True;Connect Timeout=30";
            SqlConnection cn = new SqlConnection(conn);
            cn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = cn;
            string line;

            System.IO.StreamReader file = new System.IO.StreamReader("C:\\Users\\Public\\New1.txt");
            while ((line = file.ReadLine()) != null)
            {
                line = line.Trim();
                line = line.TrimEnd(',', ',',',', '.');
                cmd.CommandText = const_state + line+";";
                cmd.ExecuteNonQuery();
                i++;
            }
            MessageBox.Show(i.ToString());

            file.Close();
        }
        catch(Exception ex)
        {
            MessageBox.Show(i.ToString());
            MessageBox.Show(ex.ToString());
        }

    }
}
}



提前谢谢

我要做的是为您的
ExecuteNonQuery()
调用设置一个
try/catch
块。大概是这样的:

        while ((line = file.ReadLine()) != null)
        {
            line = line.Trim();
            line = line.TrimEnd(',', ',',',', '.');
            cmd.CommandText = const_state + line+";";
            try 
            {
                cmd.ExecuteNonQuery();
            }
            catch
            {
                // dump cmd.CommandText somewhere as well as 
                // the actual exception details
                //
                // that'll give you two things: 1) the specific 
                // issue, and 2) the actual INSERT statement that 
                // failed
            }
            i++;
        }
请参阅
catch{}
块中关于如何处理插入错误的注释

通过让
try/catch
围绕
ExecuteNonQuery()
调用,您将遇到
INSERT
语句失败的粒度问题,以及带有错误的特定异常。另一个好处是它允许您继续执行,而不是将异常冒泡到外部
try/catch
逻辑。当然,除非您想停止执行,在这种情况下,您可以从内部
catch{}
块中重新抛出异常。这完全取决于您希望如何处理故障


注意:对于您的外部
try/catch
块,您应该包括一个
finally{}
,在其中调用
SqlConnection.Dispose()
来释放连接并释放对象(
cn.Dispose()
)。
我要做的是为您的
ExecuteNonQuery()创建一个
try/catch
打电话。大概是这样的:

        while ((line = file.ReadLine()) != null)
        {
            line = line.Trim();
            line = line.TrimEnd(',', ',',',', '.');
            cmd.CommandText = const_state + line+";";
            try 
            {
                cmd.ExecuteNonQuery();
            }
            catch
            {
                // dump cmd.CommandText somewhere as well as 
                // the actual exception details
                //
                // that'll give you two things: 1) the specific 
                // issue, and 2) the actual INSERT statement that 
                // failed
            }
            i++;
        }
请参阅
catch{}
块中关于如何处理插入错误的注释

通过让
try/catch
围绕
ExecuteNonQuery()
调用,您将遇到
INSERT
语句失败的粒度问题,以及带有错误的特定异常。另一个好处是它允许您继续执行,而不是将异常冒泡到外部
try/catch
逻辑。当然,除非您想停止执行,在这种情况下,您可以从内部
catch{}
块中重新抛出异常。这完全取决于您希望如何处理故障


注意:对于您的外部
try/catch
块,您应该包括一个
finally{}
,在这里调用
SqlConnection.Dispose()
,以释放连接并释放对象(
cn.Dispose()
)。

您能给我们看看您的代码吗?听起来您只需要重新进行错误处理,以便更好地了解故障(即,哪个文件包含故障数据,故障是什么,等等)。您可以向我们展示您的代码吗?听起来您只需要重新进行错误处理,以便更好地了解故障(即,哪个文件包含故障数据,故障是什么,等等)。是的,这应该可以解决错误问题,时间呢,因为读取45000000行将是一项繁重的工作,还有解决方案吗?@SrikanthSuryadevara您是指从文本文件中读取数据的持续时间,还是指将数据插入数据库表的持续时间?从文本文件读取+写入DBYah这应该可以解决错误问题,时间呢,因为读取45000000行将是一项繁重的工作,还有解决方案吗?@SrikanthSuryadevara您是指从文本文件中读取数据的持续时间,还是指将数据插入数据库表的持续时间?从文本文件读取+写入数据库