使用SqlBulkCopy,如何将数据插入到非默认数据库模式的表中?

12

我需要使用 SqlBulkCopy 将数据插入到名为 Staging 的模式中的一个表中。

似乎该 API 只允许您通过使用 DestinationTableName 属性来设置目标表的名称。

我该如何完成这个任务?这可能吗?

1个回答

19

尽管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 注入攻击。因此,如果您在某个时候从用户那里获取这些信息,请务必在运行此操作之前对输入进行清理处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接