我工作的公司有很大的数据库,在一个表中有数百万条记录。我已经编写了一个在远程服务器之间迁移表的C#程序。
我首先使用SMO创建所有表,而不复制数据,然后在创建所有表之后插入数据。
在插入记录期间,由于有太多记录,控制台窗口一直保持空白,直到所有行都插入完毕。由于数据量太大,这需要很长时间。
我现在想要的是一种打印n行更新的方法,就像在MSSQL导入导出数据向导中一样。
插入部分只是一个简单的insert into select *查询。
发布于 2012-10-30 17:10:27
您肯定需要查看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);
}
}此外,我还建议使用存储过程来实现这些目的。
发布于 2012-10-30 16:29:48
听起来您可能正在使用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);
}
}https://stackoverflow.com/questions/13135060
复制相似问题