【发布时间】:2012-03-23 16:00:35
【问题描述】:
这里有一个 400 MB 的 .txt 文件,由“|”分隔。使用带有 C# 的 Windows 窗体,我将 .txt 文件的每一行插入到我的 SQL Server 数据库中的表中。
我正在做的只是这个(为简洁起见,缩写为“...”):
while ((line = file.ReadLine()) != null)
{
string[] split = line.Split(new Char[] { '|' });
SqlCommand cmd = new SqlCommand("INSERT INTO NEW_AnnualData VALUES (@YR1984, @YR1985, ..., @YR2012)", myconn);
cmd.Parameters.AddWithValue("@YR1984", split[0]);
cmd.Parameters.AddWithValue("@YR1985", split[1]);
...
cmd.Parameters.AddWithValue("@YR2012", split[28]);
cmd.ExecuteNonQuery();
}
现在,这正在工作,但需要一段时间。这是我第一次用大量数据做任何事情,所以我需要确保 A) 我正在以有效的方式做这件事,并且 B) 我的期望不会太高。
在循环进行时使用SELECT COUNT(),我可以看到数字随着时间的推移而上升和上升。所以我用了一个时钟和一些基本的数学来计算出事情的运行速度。 在 60 秒内,有 73881 次插入。那是每秒 1231 次插入。问题是,这是平均速度,还是我的表现很差?如果是后者,我该怎么做才能提高性能?
我确实读过一些关于 SSIS 准确地为此目的有效的信息。但是,我需要通过单击 Windows 窗体中的按钮来执行此操作,而不是通过 SISS。
【问题讨论】:
标签: sql sql-server performance import flat-file