我需要将数据插入到名为Staging
using的模式中的表中SqlBulkCopy
。
看来 API 只允许您使用该DestinationTableName
属性设置目标表名称。
我该如何做到这一点?是否可以?
我需要将数据插入到名为Staging
using的模式中的表中SqlBulkCopy
。
看来 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 注入的攻击。因此,如果您在某个时候从用户那里获取此信息,请确保在运行此操作之前清理输入。