动态打印更新的行数

时间:2012-10-30 08:18:58

标签: c# sql

我工作的公司拥有大型数据库,单个表中有数百万条记录。我编写了一个C#程序,用于在远程服务器之间迁移表。

我首先使用SMO创建所有表而不复制数据,然后在创建所有表之后完成数据插入。

在记录插入期间,由于记录太多,控制台窗口保持空白,直到插入了所有行。由于数据量庞大,这需要很长时间。

我现在想要的是一种在MSSQL导入导出数据向导中打印更新n行的方法 插入部分只是一个简单的insert into select *查询。

2 个答案:

答案 0 :(得分:1)

听起来你可能正在使用SqlCommands,如果是这样的话,那么这是一个样本

using (SqlConnection connection = new SqlConnection(Connection.ConnectionString) )
{
    using(SqlCommand command = new SqlCommand("insert into  OldCustomers select * from customers",connection))
    {
        connection.Open();
        var numRows = command.ExecuteNonQuery();
        Console.WriteLine("Affected Rows: {0}",numRows);
    }
}

答案 1 :(得分:0)

你肯定需要查看OUTPUT条款。 MSDN上有一些有用的例子。

using (SqlConnection conn = new SqlConnection(connectionStr) )
{
    var sqlCmd = "
                  CREATE TABLE #tmp (
                      InsertedId BIGINT                                             
                  );
                  INSERT INTO TestTable
                  OUTPUT Inserted.Id INTO #tmp
                  VALUES ....
                  SELECT COUNT(*) FROM #tmp";
    using(SqlCommand cmd = new SqlCommand(sqlCmd,conn))
    {
        conn .Open();
        var numRows = command.ExecuteNonQuery();
        Console.WriteLine("Affected Rows: {0}",numRows);
    }
}

此外,我建议将存储过程用于此目的。