11

我需要将数据插入到名为Stagingusing的模式中的表中SqlBulkCopy

看来 API 只允许您使用该DestinationTableName属性设置目标表名称。

我该如何做到这一点?是否可以?

4

1 回答 1

17

虽然 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 注入的攻击。因此,如果您在某个时候从用户那里获取此信息,请确保在运行此操作之前清理输入。

于 2010-12-02T16:42:51.083 回答