使用SqlBulkCopy,如何將數據插入非默認數據庫模式的表中?

.net database-schema schema sqlbulkcopy

我需要使用SqlBulkCopy將數據插入名為Staging的模式中的表中。

API似乎只允許您使用DestinationTableName屬性設置目標表名。

我該如何做到這一點?可能嗎?

一般承認的答案

雖然API沒有提供設置目標模式的顯式接口,但您實際上可以將2或3部分限定表名稱填充到DestinationTableName屬性中,如下所示:

b.DestinationTableName = string.Format("[{0}].[{1}]", schemaName, tableName);

要么

b.DestinationTableName =
    string.Format("[{0}].[{1}].[{2}]", databaseName, schemaName, tableName);

鑑於BULK INSERT始終支持完全限定的表名,這些單獨的組件從未進入API似乎是一個很大的疏忽。

此外,由於看起來DestinationTableName只是輸出到BULK INSERT語句中,因此該屬性可能容易受到SQL注入的攻擊。因此,如果您在某個時刻從用戶那裡獲得此信息,請確保在運行此操作之前清理輸入。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因