C# 如何编写使用从c创建的临时表的存储过程#
我有一个用C#开发的应用程序,它遵循以下流程:C# 如何编写使用从c创建的临时表的存储过程#,c#,sql-server,C#,Sql Server,我有一个用C#开发的应用程序,它遵循以下流程: 读取CSV文件 创建临时表 使用SqlBulkCopy将CSV数据发送到临时表 调用存储过程将临时表合并到实表中 删除临时表 using (var dbConnection = new SqlConnection(_connectionString)) { dbConnection.Open(); using (var cmd = new SqlCommand("CREATE TABLE [#UpdatedData]([Path
- 读取CSV文件
- 创建临时表
- 使用SqlBulkCopy将CSV数据发送到临时表
- 调用存储过程将临时表合并到实表中
- 删除临时表
using (var dbConnection = new SqlConnection(_connectionString)) { dbConnection.Open(); using (var cmd = new SqlCommand("CREATE TABLE [#UpdatedData]([Path] [nvarchar](50))", dbConnection)) { cmd.ExecuteNonQuery(); } using (var bulkCopy = new SqlBulkCopy(dbConnection)) { bulkCopy.DestinationTableName = "[#UpdatedData]"; bulkCopy.WriteToServer(dt); } using (var cmd = new SqlCommand("usp_MergeData", dbConnection)) { cmd.CommandType = CommandType.StoredProcedure; cmd.ExecuteNonQuery(); } using (var cmd = new SqlCommand("DROP TABLE [#UpdatedData]", dbConnection)) { cmd.ExecuteNonQuery(); } }
我正在使用localdb for dev和SQL Azure for production。您可以创建一个全局临时表:
using (var cmd = new SqlCommand(
"CREATE TABLE [##UpdatedData]([Path] [nvarchar](50))"
, dbConnection))
编辑
由于SQL Azure中不能有全局临时表,您可能必须创建一个真正的表。我终于在没有永久表或全局表的情况下创建了它
我没有尝试在SQL Server中创建合并存储过程,而是在C#中用字符串编写了一个大型合并函数,并将其作为普通SQL查询执行 sqlserver也有临时表的概念。你可以使用OPENROWSET…为什么不创建一个表,然后在完成后简单地截断它呢。有时,简单的解决方案是最好的。如果您解释一下为什么需要使用临时表,这会很有帮助。您描述的逻辑在ETL领域非常常见,但不需要使用临时表,只需使用永久表即可。@MarkKram请您举个例子,我对您的解决方案感兴趣!SQL Azure中没有全局临时表。无论如何谢谢:)@sweel哦,好吧(你每天都能学到新东西)。。。我想你得有一张固定的桌子